/usr / lib / libstdc++. so. 6: версия 'GLIBCXX 3.4.15' не найдена



Как я могу получить GLIBCXX_3.4.15 в Ubuntu? Я не могу запустить некоторые программы, которые я составляю.



когда я делаю:



strings /usr/lib/libstdc++.so.6 | grep GLIBC


Я:



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


Спасибо за любую помощь!

663   17  

17 ответов:

я компилирую gcc 4.6 из источника, и, видимо,

sudo make install 

не поймал этого. Я покопался и нашел

gcc/trunk/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.15

Я скопировал его в /usr / lib и перенаправил libstdc++.so.6, чтобы указать на новый, и теперь все работает.

я избегал этой проблемы в прошлом, просто связывая libstdc++ статически с этим параметром, отправленным в g++ при связывании моего исполняемого файла:

-static-libstdc++

если связывание в библиотеке статически является опцией, это, вероятно,самая быстрая работа.

Я пытался заставить clang работать (что также требует 6.0.15), и пока я ковырялся, я обнаружил, что он был установлен в /usr/local/lib/libstdc++.so.6.0.15. Он установлен там, когда я установил graphite (экспериментальная версия gcc).

Если вам нужен доступ к библиотекам в этом месте, то вам необходимо определить LD_LIBRARY_PATH как:

export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64

Я был в состоянии получить лязг на работу после этого. Надеюсь, что это полезно для кого-то.

я сталкиваюсь с этой проблемой при попытке использовать matlab eng для вызова M функций из кода c. что происходит с командой mex -f .. ..

мое решение:

strings /usr/lib/i386-<tab>/libstdc++.so.6 | grep GLIBC

я обнаружил, что он включает в себя 3.4.15

Так что моя система имеет новейшие библиотеки.

проблема исходит от самого matlab, он называет свой собственный libstdc++. so. 6 от {MATLAB}/bin

Итак, просто замените его обновленной системой lib.

для этой ошибки я скопировал последнюю версию libstdc++. so.6.0.17 с другого сервера и удалил мягкую ссылку и воссоздал ее.

1. Скопируйте libstdc++. so.6.0.15 или последнюю версию с другого сервера в уязвимую систему.
В моем случае SUSE linux 11 SP3 был последним.
2. rm libstdc++. so. 6
3. ln-s libstdc++. so.6.0.17 libstdc++. so.6 (в каталоге /usr/lib64).

nJoy

GCC версии 4.8.1, ошибка выглядит так:

/ root/bllvm / build / Release+Asserts/bin/llvm-tblgen: в /usr/lib64/libstdc++в.так.6: версия `GLIBCXX_3.4.15' не найден (Требуется /root / bllvm / build / Release+Asserts/bin / llvm-tblgen)

Я нашел libstdc++. so.6.0. 18 в том месте, где я выполнил gcc 4.8.1

тогда мне это нравится

cp ~/objdir/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18 /usr/lib64/

rm /usr/lib64/libstdc++.so.6

ln -s libstdc++.so.6.0.18 libstdc++.so.6

проблема решена.

Я только что столкнулся с подобной проблемой при создании версии LLVM 3.7. сначала проверьте, установлена ли необходимая библиотека в вашей системе:

$locate libstdc++.so.6.*

затем добавьте найденное местоположение в переменную среды $LD_LIBRARY_PATH.

Я получил ту же ошибку. Вот как это работало для меня:

  • очистить проект в рамках установленных НКУ
  • перекомпилировать его

отлично работал!

я извлек их из RPM (RPM для libstdc++), а затем:

export LD_LIBRARY_PATH=.

чтобы настроить систему на поиск библиотек в текущем каталоге. Затем просто выполнил мою программу. Но в моем случае я получил один исполняемый файл, который мне нужен, это не было системным изменением.

иногда вы не контролируете целевую машину (например, ваша библиотека должна работать на заблокированной корпоративной системе). В таком случае вам нужно будет перекомпилировать ваш код, используя версию GCC, которая соответствует их версии GLIBCXX. В этом случае, вы можете сделать следующее:

  1. посмотрите последнюю версию GLIBCXX, поддерживаемую целевой машиной:strings /usr/lib/libstdc++.so.6 | grep GLIBC ... Скажем, версия 3.4.19.
  2. использовать https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html чтобы найти соответствующую версию GCC. В нашем случае это [4.8.3, 4.9.0).

у меня была аналогичная проблема, и я решил ее, статически связывая libstdc++ в программу, которую я компилировал, вот так:

$ LIBS=-lstdc++ ./configure ... etc.

вместо

$ ./configure ... etc.

могут возникнуть проблемы с этим решением, связанные с загрузкой общих библиотек во время выполнения, но я не изучил проблему достаточно глубоко, чтобы комментировать.

У меня была такая же проблема раньше, и исправлено, что шаги можно найти на этом исправление ошибки "GLIBCXX_3.4. 15" на matlab

ошибка с GLIBCXX_3.4. 14 Вам надо установить более новую версию GCC. http://pkgs.org/download/libstdc++. so. 6 Гото:

http://geeksterminal.com/how-to-install-glib-glibc/1392/

и следовать инструкциям.

У меня была та же проблема, потому что я изменил пользователя от себя к кому-то другому:

Су

по какой-то причине после обычной компиляции я не смог ее выполнить (то же сообщение об ошибке). Непосредственно ssh для другой учетной записи пользователя работает.

У меня было установлено несколько версий компилятора gcc, и мне нужно было использовать более позднюю версию, чем установка по умолчанию. Поскольку я не являюсь системным администратором для наших систем Linux, я не могу просто изменить /usr/lib или многие другие предложения выше. Я столкнулся с этой проблемой и в конечном итоге отследил ее до установки моего пути к каталогу 32-разрядной библиотеки вместо каталога 64-разрядной библиотеки (lib64). Поскольку библиотеки в 32-разрядном каталоге были несовместимы, система по умолчанию перешла на старую версию, которая устарела.

использование -L к пути, на который я ссылался, дало предупреждения о "пропуске несовместимого libstdc++.поэтому при поиске-lstdc++". Это был намек, который помог мне, наконец, решить проблему.

то же самое с версией gcc 4.8.1 (GCC) и libstdc++.so.6.0.18. Пришлось скопировать его сюда /usr/lib/x86_64-linux-gnu на моем поле ubuntu.

в моем случае LD_LIBRARY_PATH имел /usr /lib64 сначала перед/usr/local / lib64. (Я строил llvm 3.9).
Новый компилятор gcc, который я установил для компиляции llvm 3.9, имел библиотеки, использующие более новые библиотеки GLIBCXX под /usr/local /lib64, поэтому я исправил LD_LIBRARY_PATH для компоновщика, чтобы сначала увидеть/usr/local / lib64.
Это решило эту проблему.

Comments

    Ничего не найдено.