Přidejte cestu ke knihovně do LD_LIBRARY_PATH
proměnná prostředí
TL;DR
GCC vyžaduje, abyste mu sdělili, kde se vaše knihovna nachází ručně, když nemůže najít správnou verzi, což lze provést několika způsoby. Jedním z nich je přidání do LD_LIBRARY_PATH
.
export LD_LIBRARY_PATH="/usr/local/lib64/:$LD_LIBRARY_PATH"
U některých bude cesta ke knihovně /usr/local/lib64/
. Jiní nahlásili cestu knihovny /usr/lib/x86_64-linux-gnu/
místo toho pro ně pracovat.
Proč potřebujeme přidat knihovnu do LD_LIBRARY_PATH
?
Když zkompilujete a nainstalujete GCC, umístí knihovny do jednoho z těchto adresářů, ale to je vše. Podle častých dotazů pro libstdc++
, chyba, kterou jsme dostali, znamená, že dynamický linker našel špatnou verzi libstdc++
sdílená knihovna. Protože linker nemůže najít správnou verzi, musíme mu říct, kde najde libstdc++
knihovna.
Nejjednodušším způsobem, jak to vyřešit, je použít proměnnou prostředí LD_LIBRARY_PATH, což je seznam adresářů oddělených dvojtečkami, ve kterých bude linker hledat sdílené knihovny.
Existují i jiné způsoby, jak tento problém vyřešit. Toto a další krátce zmíněná řešení naleznete při instalaci gcc
pokud si přečtete výstup make:
Knihovny byly nainstalovány v:
/usr/local/lib/../lib32
Pokud se někdy budete chtít propojit s nainstalovanými knihovnami v daném adresáři, LIBDIR, musíte buď použít libtool a zadat úplnou cestu ke knihovně, nebo během propojování použít příznak `-LLIBDIR' a provést alespoň jeden z následující:
- přidat LIBDIR do proměnné prostředí LD_LIBRARY_PATH během provádění
- při propojování přidat LIBDIR do proměnné prostředí LD_RUN_PATH
- použijte příznak linkeru `-Wl,-rpath -Wl,LIBDIR'
- požádejte správce systému, aby přidal LIBDIR do `/etc/ld.so.conf'
Další informace naleznete v jakékoli dokumentaci operačního systému o sdílených knihovnách, jako jsou manuálové stránky ld(1) a ld.so(8).
Grr, to bylo jednoduché! Také "kdybyste se někdy chtěli propojit s nainstalovanými knihovnami," vážně?
Měl jsem stejný problém na svém Ubuntu 14.04 při pokusu o instalaci TopTracker. Mám takové chyby:
/usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:verze 'CXXABI_1.3.8' nenalezena (vyžadováno /usr/share/toptracker/bin/TopTracker)/ usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:verze 'GLIBCXX_3.4.21' nenalezena (vyžadováno /usr/share/toptracker/bin/TopTracker)/usr /share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:verze 'CXXABI_1.3.9' nenalezena (vyžadováno /usr/share/toptracker/bin/TopTracker)
Ale pak jsem nainstaloval verzi gcc 4.9 a problém zmizel:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9