/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
Спасибо за любую помощь!
Ответы
Ответ 1
Я компилирую gcc 4.6 из источника и, видимо,
sudo make install
не поймал этого. Я рылся и нашел
gcc/trunk/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.15
Я скопировал его в /usr/lib и перенаправил libstdС++. so.6, чтобы указать на новый, и теперь все работает.
Ответ 2
Я пытался заставить clang работать (что также требует 6.0.15), и, когда я ткнулся, я обнаружил, что он был установлен в /usr/local/lib/libstdc++.so.6.0.15
. Он был установлен там, когда я установил графит (экспериментальная версия gcc).
Если вам нужен доступ к библиотекам в этом месте, вам нужно определить LD_LIBRARY_PATH
как:
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64
Я смог заставить clang работать после этого. Надеюсь, что это полезно для кого-то.
Ответ 3
Я избегал этой проблемы в прошлом, просто связывая libstdС++ статически с этим параметром, отправленным в g++ при связывании моего исполняемого файла:
-static-libstdc++
Если связывание в библиотеке статически является вариантом, это, вероятно, самый быстрый обход.
Ответ 4
Я сталкиваюсь с этой проблемой при попытке использовать matlab eng для вызова m-функций из c-кода.
которое происходит с помощью команды mex -f .. ..
Мое решение:
strings /usr/lib/i386-<tab>/libstdc++.so.6 | grep GLIBC
Я обнаружил, что он включает в себя 3.4.15
поэтому моя система имеет новейшие библиотеки.
проблема возникает из самого Matlab, она называет свой собственный libstdС++. so.6 from {MATLAB}/bin
поэтому просто замените его обновленной системой lib.
Ответ 5
Для этой ошибки я скопировал последнюю версию libstdС++. so.6.0.17 с другого сервера и удалил софт-ссылку и воссоздал ее.
1. Скопируйте libstdС++. So.6.0.15 или последний с другого сервера в затронутую систему.
В моем случае SUSE linux 11 SP3 был последним.
2. rm libstdС++. So.6
3. ln -s libstdС++. So.6.0.17 libstdС++. So.6 (в каталоге /usr/lib 64).
NJOY
Ответ 6
gcc версии 4.8.1, ошибка выглядит так:
/корень/bllvm/сборки/Release + Утверждает /Bin/LLVM -tblgen: /usr/lib 64/libstdc++.so.6: версия `GLIBCXX_3.4.15 'не найдена (требуется командой /root/bllvm/build/Release + Asserts/bin/llvm-tblgen)
Я нашел libstdС++. 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
проблема решена.
Ответ 7
Я только что столкнулся с аналогичным выпуском версии LLVM 3.7.
сначала проверьте, установлена ли в вашей системе необходимая библиотека:
$locate libstdc++.so.6.*
Затем добавьте найденное местоположение в переменную среды $LD_LIBRARY_PATH.
Ответ 8
У меня такая же ошибка. Вот как это сработало для меня:
- очистил проект под установленным gcc
- перекомпилировал его
Работал отлично!
Ответ 9
Я извлек их из RPM (RPM для libstdС++), а затем:
export LD_LIBRARY_PATH=.
Чтобы настроить систему на поиск библиотек в текущем каталоге. Затем просто выполнил мою программу. Но в моем случае я получил один исполняемый файл, который мне нужен, это не было изменение системы.
Ответ 10
Иногда вы не контролируете целевую машину (например, ваша библиотека должна запускаться в заблокированной корпоративной системе). В таком случае вам нужно будет перекомпилировать свой код, используя версию 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)
.
Ответ 11
У меня была аналогичная проблема, и я решил ее статически связать libstdc++
с программой, которую я компилировал, например:
$ LIBS=-lstdc++ ./configure ... etc.
вместо обычного
$ ./configure ... etc.
В этом решении могут возникнуть проблемы с загрузкой разделяемых библиотек во время выполнения, но я не рассматривал проблему достаточно глубоко, чтобы комментировать.
Ответ 12
то же самое с gcc версии 4.8.1 (GCC) и libstdС++. so.6.0.18. Пришлось скопировать его здесь /usr/lib/x 86_64-linux-gnu в поле ubuntu.
Ответ 13
У меня была такая же проблема и раньше, и исправлено, что шаги можно найти на этом
Ошибка фиксации "GLIBCXX_3.4.15" на MATLAB
Ответ 14
Ошибка с GLIBCXX_3.4.14
Вам необходимо установить более новую версию GCC.
http://pkgs.org/download/libstdc++.so.6
Гото:
http://geeksterminal.com/how-to-install-glib-glibc/1392/
и следуйте инструкциям.
Ответ 15
У меня была такая же проблема, потому что я изменил пользователя от себя к кому-то другому:
su
По какой-то причине после обычной компиляции я не смог выполнить ее (то же сообщение об ошибке). Непосредственно ssh для другой учетной записи пользователя работает.
Ответ 16
У меня было несколько версий gcc-компилятора, и вам нужно было использовать более новую версию, чем установка по умолчанию. Поскольку я не являюсь системным администратором для наших Linux-систем, я не могу просто изменить /usr/lib или многие другие предложения выше. Я столкнулся с этой проблемой и в конечном итоге отследил ее до установки моего пути к 32-битной библиотеке, а не в библиотеке 64-битной библиотеки (lib64). Поскольку библиотеки в 32-битной директории были несовместимы, система по умолчанию устарела устаревшей версией, которая устарела.
Использование -L к пути, на который я ссылался, давал предупреждения о "пропуске несовместимого libstdС++, поэтому при поиске -lstdС++". Это был намек, который помог мне решить проблему.