/ usr/lib / libstdc++.Итак.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
Спасибо за любую помощь!
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++.Итак.6 указать на новый, и теперь все работает.
я избегал этой проблемы в прошлом, просто связывая libstdc++ статически с этим параметром, отправленным в g++ при связывании моего исполняемого файла:
-static-libstdc++
если связывание в библиотеке статически является опцией, это, вероятно,самая быстрая работа.
Я пытался заставить clang работать (что также требует 6.0.15), и, ковыряясь, я обнаружил, что он был установлен на /usr/local/lib/libstdc++.so.6.0.15
. Он установлен там, когда я установил графит (экспериментальная версия).
Если вам нужен доступ к библиотекам в этом месте, вам нужно будет определить LD_LIBRARY_PATH
as:
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++.Итак.6 из {MATLAB}/bin
Итак, просто замените его обновленной системой lib.
для этой ошибки я скопировал последнюю версию libstdc++.Итак.6.0.17 с другого сервера, и удалил мягкую ссылку и воссоздал ее.
1. Скопируйте libstdc++.Итак.6.0.15 или последняя версия с другого сервера на уязвимую систему.
В моем случае SUSE linux 11 SP3 был последним.
2. RM libstdc++.Итак.6
3. ЛН-ы с libstdc++.так.6.0.17 с libstdc++.так.6 (в каталог /usr/lib64).
nJoy
GCC версии 4.8.1, ошибка выглядит так:
/ root / bllvm / build/Release + утверждает/bin/llvm-tblgen: / usr/lib64 / libstdc++.Итак.6: версия ' GLIBCXX_3.4.15' не найдено (Требуется /root / bllvm / build/Release + утверждает/bin/llvm-tblgen)
Я нашел libstdc++.Итак.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
проблема решена.
Я только что столкнулся с подобной проблемой building LLVM 3.7 version. сначала проверьте, установлена ли необходимая библиотека в вашей системе:
$locate libstdc++.so.6.*
затем добавьте найденное местоположение в переменную среды $LD_LIBRARY_PATH.
Я получил ту же ошибку. Вот как это работало для меня:
- очистить проект в рамках установленных НКУ
- перекомпилировать его
отлично работал!
я извлек их из RPM (RPM для libstdc++), а затем:
export LD_LIBRARY_PATH=.
чтобы настроить систему на поиск библиотек в текущем каталоге. Затем просто выполнил свою программу. Но в моем случае я получил только один исполняемый файл, который мне нужен, это не систему менять.
иногда вы не контролируете целевую машину (например, ваша библиотека должна работать в заблокированной корпоративной системе). В таком случае вам нужно будет перекомпилировать свой код, используя версию GCC, соответствующую их версии GLIBCXX. В этом случае, вы можете сделать следующее:
- посмотрите последнюю версию GLIBCXX, поддерживаемую целевой машиной:
strings /usr/lib/libstdc++.so.6 | grep GLIBC
... Скажем, версия3.4.19
. - использовать 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++.Итак.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.
Это решило проблему.