/usr/lib/libstdc++.so.6: версия `GLIBCXX_3.4.15 'не найдена - PullRequest
128 голосов
/ 07 марта 2011

Как я могу получить 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

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

Ответы [ 18 ]

77 голосов
/ 07 марта 2011

Я компилирую 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, чтобы указать на новый, и теперь все работает.

46 голосов
/ 25 августа 2014

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

-static-libstdc++

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

43 голосов
/ 11 мая 2011

Я пытался заставить работать 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

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

12 голосов
/ 08 мая 2013

Я сталкиваюсь с этой проблемой при попытке использовать 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.

2 голосов
/ 24 декабря 2015

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

$locate libstdc++.so.6.*

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

2 голосов
/ 22 июля 2015

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

/ корень / bllvm / сборки / Release + Утверждает / бен / LLVM-tblgen: /usr/lib64/libstdc++.so.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

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

2 голосов
/ 06 августа 2014

Для этой ошибки я скопировал последнюю версию 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

2 голосов
/ 26 июня 2012

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

  • очистил проект под установленным в данный момент gcc
  • перекомпилировал его

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

1 голос
/ 09 марта 2017

Иногда вы не управляете целевым компьютером (например, ваша библиотека должна работать в закрытой корпоративной системе). В таком случае вам нужно будет перекомпилировать ваш код, используя версию 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).
1 голос
/ 13 октября 2016

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

export LD_LIBRARY_PATH=.

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

...