Я создал приложение C++ на VM Ubuntu 16.04, на котором я установил компилятор g++ 6.2.0, чтобы поддерживать функции C++ 14. Когда я попытался запустить его на новой чистой VM 16.04, которая по умолчанию g++ 5.4.0 установила ошибку /usr/lib/x86_64-linux-gnu/libstdC++.so.6: version 'GLIBCXX_3.4.22' not найдено всплывающее окно.
Я заметил, что на виртуальной машине с обновленной библиотекой компилятора установлен libstd C++.so.6.0.22. На чистой виртуальной машине я бы хотел избежать обновления компилятора, поэтому я попытался установить только последний пакет libstd C++ 6. Однако библиотека, которая была установлена, была libstd C++.so.6.0.21, и поэтому проблема продолжалась. Как я могу установить версию libstd C++.so.6.0.22?
Версия 'GLIBCXX_3.4.22' не найдена
Ответ 1
Вы можете попытаться использовать пиннинг, чтобы убедиться, что только пакеты, которые вы хотите, обновлены до более новой версии.
В качестве альтернативы вы можете просто скомпилировать свою программу с помощью g++ 5.4, потому что согласно этой странице этот компилятор уже поддерживает все С++ 14, единственное отличие состоит в том, что g++ -6 по умолчанию используется для -std = С++ 14, тогда как с g++ -5 вы должны явно установить языковой стандарт.
Ответ 2
Вам нужно обновить libstdС++ 6 до последней версии, как это
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
sudo apt-get upgrade libstdc++6
После этого вы можете проверить, хотите ли вы получить желаемую версию GLIBCXX следующим образом:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX