pokud vaše knihovny nejsou na standardní cestě, musíte je buď přidat do cesty, nebo přidat nestandardní cestu do LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<Your_non-Standard_path>
Jakmile provedete některou z výše uvedených věcí, musíte aktualizovat vazbu za běhu dynamického linkeru provedením níže uvedeného příkazu:
sudo ldconfig
AKTUALIZACE:
Změny můžete provést natrvalo buď napsáním výše uvedeného export
řádek do jednoho ze spouštěcích souborů (např. ~/.bashrc) NEBO pokud podkladová knihovna není v konfliktu s žádnou jinou knihovnou, vložte ji do jedné ze standardních knihoven (např. /lib,/usr/lib)
LD_LIBRARY_PATH
je vhodný pro krátké testy, ale protože existuje pouze jedna proměnná , je nepříjemné ho používat, když máte více aplikací s vlastními knihovnami.
Obvyklým způsobem pro Debian/Ubuntu je přidat jej do konfigurace zavaděče, např. soubor pod
/etc/ld.so.conf.d
obsahující adresář, ve kterém má zavaděč hledat, např.
/usr/local/libcsfml
Další čtení:
- ldconfig – konfigurace vazeb dynamického linkeru za běhu
- ld.so, ld-linux.so* – dynamický linker/zavaděč
- Proč je LD_LIBRARY_PATH špatná
Vypadá to, jako byste dotyčný binární soubor zkompilovali vy.
Takže jste zodpovědní za problém, že některé knihovny nelze najít.
V případě, že jsou tyto knihovny ve vašem systému dostupné, zdá se, že jsou umístěny v nestandardních umístěních adresářů.
Použijte -R directory
pro finální volání kompilátoru sdělí linkeru directory
kde se nacházejí knihovny. Více než jeden -R directory
možnost je možná.
Všimněte si, že když používáte gcc
, možná budete muset použít -Wl,-R
místo -R
.