Jak mogę uzyskać GLIBCXX_3.4.15 w Ubuntu? Nie mogę uruchomić niektórych programów, które kompiluję.
Kiedy robię:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
Dostaję:
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
Dzięki za pomoc!
apt-get
Oparty Rozwiązaniem tego problemu jest opisane tutaj: superuser.com/questions/310809/...W przeszłości unikałem tego problemu, po prostu łącząc libstdc ++ statycznie z tym parametrem wysyłanym do g ++ podczas łączenia mojego pliku wykonywalnego:
Jeśli statyczne linkowanie w bibliotece jest opcją, jest to prawdopodobnie najszybsze obejście.
źródło
Próbowałem uruchomić clang (który również wymaga wersji 6.0.15), a podczas szperania w pobliżu stwierdziłem, że jest zainstalowany w
/usr/local/lib/libstdc++.so.6.0.15
. Zainstalował się tam, kiedy zainstalowałem grafit (eksperymentalna wersja gcc).Jeśli potrzebujesz dostępu do bibliotek w tej lokalizacji, musisz zdefiniować
LD_LIBRARY_PATH
jako:export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64
Po wykonaniu tej czynności byłem w stanie zabrać się do pracy. Mam nadzieję, że to komuś pomoże.
źródło
LD_LIBRARY_PATH
będzie miała na nie wpływ. wszystkie będą linkować do nowej biblioteki, W końcu większość plików binarnych nie działa: na przykładls
grep
...: Otrzymuję:ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
Napotykam ten problem, gdy próbuję użyć języka Matlab do wywołania funkcji m z kodu C. co następuje na polecenie
mex -f .. ..
Moje rozwiązanie:
Okazało się, że zawiera 3.4.15
więc mój system ma najnowsze biblioteki.
problem pochodzi z samego Matlaba, wywołuje własne libstdc ++. so.6 from
{MATLAB}/bin
więc po prostu zastąp go zaktualizowaną biblioteką systemową.
źródło
{MATLAB}/bin
pliku w/usr/lib/
, a następnie ponownie uruchomić matlab. Działa to w Matlab 2010b w Fedorze 14 x64.Mam ten sam błąd. Tak to działało u mnie:
Działało idealnie!
źródło
W przypadku tego błędu skopiowałem najnowszą wersję libstdc ++. So.6.0.17 z innego serwera, usunąłem link miękki i odtworzyłem go.
1. Skopiuj plik libstdc ++. So.6.0.15 lub nowszy z innego serwera do systemu, którego dotyczy luka.
W moim przypadku SUSE linux 11 SP3 miał najnowsze.
2. rm libstdc ++. So.6
3. ln -s libstdc ++. So.6.0.17 libstdc ++. So.6 (w katalogu / usr / lib64).
nJoy
źródło
Właśnie miałem podobny problem z budowaniem wersji LLVM 3.7. najpierw sprawdź, czy zainstalowałeś wymaganą bibliotekę w swoim systemie:
Następnie dodaj znalezioną lokalizację do zmiennej środowiskowej $ LD_LIBRARY_PATH.
źródło
Czasami nie kontrolujesz maszyny docelowej (np. Twoja biblioteka musi działać w zablokowanym systemie przedsiębiorstwa). W takim przypadku będziesz musiał ponownie skompilować swój kod przy użyciu wersji GCC, która odpowiada ich wersji GLIBCXX. W takim przypadku możesz wykonać następujące czynności:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
... Powiedz, że wersja to3.4.19
.[4.8.3, 4.9.0)
.źródło
gcc w wersji 4.8.1, wygląda na to, że błąd:
Znalazłem libstdc ++. So.6.0.18 w miejscu, w którym przestrzegałem gcc 4.8.1
Więc to lubię
problem rozwiązany.
źródło
Wyodrębniłem je z RPM ( RPM dla libstdc ++ ), a następnie:
Aby ustawić system tak, aby wyszukiwał biblioteki w bieżącym katalogu. Wtedy właśnie wykonałem mój program. Ale w moim przypadku otrzymałem jeden plik wykonywalny, którego potrzebowałem, nie była to zmiana obejmująca cały system.
źródło
Miałem podobny problem i rozwiązałem go, łącząc się statycznie
libstdc++
z programem, który kompilowałem, na przykład:zamiast zwykłego
Z tym rozwiązaniem mogą wystąpić problemy związane z ładowaniem bibliotek współdzielonych w czasie wykonywania, ale nie zagłębiłem się w ten problem na tyle szczegółowo, aby go skomentować.
źródło
Błąd z GLIBCXX_3.4.14 Musisz zainstalować nowszą wersję GCC. http://pkgs.org/download/libstdc++.so.6 goto:
http://geeksterminal.com/how-to-install-glib-glibc/1392/
i postępuj zgodnie z instrukcjami.
źródło
Miałem ten sam problem, ponieważ zmieniłem użytkownika ze siebie na kogoś innego:
su
Z jakiegoś powodu po wykonaniu normalnej kompilacji nie byłem w stanie go wykonać (ten sam komunikat o błędzie). Działa bezpośrednio ssh na inne konto użytkownika.
źródło
Miałem zainstalowanych wiele wersji kompilatora gcc i potrzebowałem użyć nowszej wersji niż domyślna instalacja. Ponieważ nie jestem administratorem systemu dla naszych systemów Linux, nie mogę po prostu zmienić / usr / lib lub wielu innych sugestii powyżej. Napotkałem ten problem i ostatecznie wyśledziłem go do ustawienia mojej ścieżki do katalogu biblioteki 32-bitowej zamiast katalogu biblioteki 64-bitowej (lib64). Ponieważ biblioteki w katalogu 32-bitowym były niekompatybilne, system domyślnie ustawił starszą wersję, która była nieaktualna.
Użycie -L do ścieżki, do której się odnosiłem, dało ostrzeżenia o „pomijaniu niekompatybilnego libstdc ++. Więc podczas wyszukiwania -lstdc ++”. To była wskazówka, która pomogła mi ostatecznie rozwiązać problem.
źródło
To samo z wersją gcc
4.8.1 (GCC)
ilibstdc++.so.6.0.18
. Musiałem go skopiować tutaj/usr/lib/x86_64-linux-gnu
na moje pudełko ubuntu.źródło
W moim przypadku LD_LIBRARY_PATH miał / usr / lib64 najpierw przed / usr / local / lib64. (Budowałem llvm 3.9).
Nowy kompilator gcc, który zainstalowałem, aby skompilować llvm 3.9, miał biblioteki korzystające z nowszych bibliotek GLIBCXX w / usr / local / lib64. Naprawiłem więc LD_LIBRARY_PATH, aby linker widział najpierw / usr / local / lib64.
To rozwiązało ten problem.
źródło
Właśnie użyłem -static-libstdc ++ podczas budowania. w / to mogę uruchomić a.out
źródło
Do celów testowych:
Na oryginalnym komputerze znajdź bibliotekę i skopiuj ją do tego samego katalogu, co plik wykonywalny:
Następnie skopiuj tę samą bibliotekę na maszynę docelową i uruchom plik wykonywalny:
Uwaga: powyższe polecenie jest tymczasowe; nie jest to zmiana dotycząca całego systemu.
źródło
Miałem wcześniej ten sam problem i naprawiłem go, kroki można było znaleźć w tym błędzie Naprawianie „GLIBCXX_3.4.15” w programie Matlab
źródło