GLIBCXX_3.4.20 не найден, как исправить эту ошибку?

Когда я пытаюсь запустить программу Layout Editor (доступна на этом сайте) в 64-битной LTS Ubuntu 14.04.1, я получаю следующий вывод в терминале:

$ layout
layout: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by layout)

Я попробовал команду strings на /usr/lib/x86_64-linux-gnu/libstdc++.so.6 следующим образом и вот вход и выход:

$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
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
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

Как я могу решить эту проблему, я как-то догадываюсь, что это связано с GCC но не могу понять, как решить проблему. Кроме того, я попробовал PPA, как предложено в разделе Как использовать последнюю версию GCC в Ubuntu? и есть аналогичный вопрос для более старой версии Ubuntu в GLIBCXX_3.4.15 не найден. Однако после того, как я побежал sudo update Я получаю множество предупреждений, и в списке, который я получил с помощью команды strings, не было новых записей после установки gcc 4.9поэтому я очистил PPA ( Toolchains Test Builds) с ppa-purge, Любая помощь, предложения о том, как поступить, с благодарностью.

9 ответов

Решение

У меня возникла та же проблема при попытке запустить другую программу, и я нашел решение для StackOverflow.

В основном, просто выполните следующие команды: во-первых, установите:

sudo apt-get install libstdc++6

Это уже должно быть установлено по умолчанию, но попробуйте в любом случае. Если это не решит проблему, просто сделайте следующее:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

Я не выполнил команду "dist-upgrade", но те, что раньше, решили ее для меня

Это случилось со мной с anaconda 4.0.0 (как сказано в @mjp), но исправление для меня состояло в том, чтобы запустить эту команду в моей среде:

conda install libgcc

У меня была эта проблема - это было потому, что Anaconda2 не было версии GLIBCXX_3.4.20 какой бы то ни было вещи. Только до.19, такой же как у тебя.

Однако в библиотеке Ubuntu это было. Поэтому я просто создал мягкую ссылку / ярлык в библиотеке Anaconda на настоящую библиотеку Linux, содержащую этот GLIBCXX_3.4.20, заменив предыдущую, и она работала нормально после перезапуска Python GUI (Spyder).

Там должна быть папка с именем libstdc++.so.6 в библиотеке Anaconda, которая находится здесь: ~/anaconda2/lib, В этой папке находятся версии скрипта / библиотеки-кода, за исключением той, которую вам не хватает: GLIBCXX_3.4.20

Для решения проблемы выполните следующие действия:

  1. перейдите в нужное место и сделайте резервную копию своего текущего anaconda2 ярлык (измените его имя, чтобы оно не перезаписывалось):

    cd ~/anaconda2/lib
    mv -vf libstdc++.so.6 libstdc++.so.6.old
    
  2. создать новый ярлык, используя ln команда (я предполагаю, что я нахожусь в предыдущем месте ~/anaconda2/lib):

    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./libstdc++.so.6
    
  3. перезапустите spyder / другой интерфейс, который вы используете

Теперь должно работать!

Я решил проблему, как это (но GLIBCXX_3.4.21) на CentOS, но это не зависит от ОС. Библиотека является частью компилятора gcc, поэтому необходимо установить или скомпилировать соответствующую версию gcc. Это таблица версий gcc и версий соответствующих libstdC++:

GCC 4.9.0: libstdc++.so.6.0.20
GCC 5.1.0: libstdc++.so.6.0.21
GCC 6.1.0: libstdc++.so.6.0.22
GCC 7.1.0: libstdc++.so.6.0.23
GCC 7.2.0: libstdc++.so.6.0.24
GCC 8.0.0: libstdc++.so.6.0.25

(полный список версий здесь)

Это не зависит от того, как установить gcc - его можно установить из пакета или скомпилировать и установить из исходных кодов.

Вполне возможно, что системные библиотеки gcc доступны вместо недавно установленных. Поэтому необходимо указать переменную среды, где искать библиотеки, например, в командной строке следующим образом:

$ LD_LIBRARY_PATH=/usr/local/lib64 command args ...

before_install:

# Этот обходной путь необходим, чтобы избежать ошибок libstdC++ при запуске "расширенного" hugo с поддержкой SASS.

  • wget -q -O libstdc++6 http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb
  • sudo dpkg --force-all -i libstdc++6

установить:

  • wget -q -O hugo.deb https://github.com/gohugoio/hugo/releases/download/v0.46/hugo_extended_0.46_Linux_64bit.deb
  • sudo dpkg -i hugo.deb

Я нашел это решение здесь

Я имел это много раз в течение многих лет со многими различными пакетами. Это всегда было решено путем:

sudo apt-get dist-upgrade

Если ваш дистрибутив может быть обновлен, он почти всегда отключит новую библиотеку C++ и перенастроит такие вещи, чтобы они снова работали. Проблема почти всегда вызвана тем, что ваша система не указывает на нужную библиотеку. В моем случае это обычно вызвано указанием на кросс-компиляторную версию библиотеки.

sudo cp /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6 /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6.0.20 /usr/lib/x86_64_linux-gnu/

У меня была такая же проблема при установке Ubuntu 18.04 в Virtualbox с изображением живого сервера. Я не уверен, что сделал не так, но получил ту же ошибку

"apt-get: symbol lookup error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: undefined symbol: , version GLIBCXX_3.4.11"

Я использовал 64-разрядную версию, и мне пришлось загрузить этот файл с помощью

wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-8/libstdc++6_8.4.0-1ubuntu1~18.04_amd64.deb

и установлен с помощью dpkg -i. Потом все нормально работает с APT.

Затем сделал apt-get upgrade чтобы убедиться, что все в порядке.

Это сработало для меня (даже для более новых glibcxx, таких как GLIBCXX_3.4.29)

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

sudo apt обновить libstdc++6

Другие вопросы по тегам