GNU/Linux >> Znalost Linux >  >> Linux

/usr/lib/x86_64-linux-gnu/libstdc++.so.6:verze CXXABI_1.3.8' nenalezena

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

Linux
  1. Proč Webp Utilities postavené na Ubuntu 14.04 nefungují a zobrazují chybu knihovny?

  2. gcc - chyba /usr/bin/ld:nelze najít <knihovnu> v /usr/local/lib, přestože ji ldconfig uvádí a cesta byla přidána do ld.so.conf

  3. zsh:příkaz nenalezen laravel

  1. matlab na linuxu nemůže nic vykreslit (nelze načíst libstdc++.so.6:verze `CXXABI_1.3.8' nenalezena)

  2. Jaké jsou významy /usr/sbin, /usr/local/sbin a /usr/local/bin?

  3. nejsou k dispozici žádné informace o verzi (vyžaduje /usr/bin/ssh)

  1. Nebyl nalezen žádný způsob, jak vyřešit verzi `GLIBC_2.17'?

  2. Proč dávat věci jiné než /home do samostatného oddílu?

  3. Rozdíl mezi /bin a /usr/bin