После установки новой сборки машины, я узнал, что он пришел с 6.0.10 из стандартной библиотеки C++Link с более старой версии libstdC++
-rw-r--r-- 1 root root 1019216 2009-01-02 12:15 libstdc++.so.6.0.10
Многие из наших целевых машин, однако, по-прежнему использовать более старый версия libstdC++, например:
-rwxr-xr-x 1 root root 985888 Aug 19 21:14 libstdc++.so.6.0.8
Видимо ABI изменилось в эти последние два 0.0.1, поскольку пытается пробежать результаты программы в
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
Я попытался явно установить более старую версию gcc, но это не помогло. Модернизация целевых машин вне моего контроля, поэтому не вариант. Каков наилучший способ заставить мои сборки работать на машинах со старым libstdC++?
Я искал в APT-кэша для более старых версий libstdC++, чтобы установить, но, видимо, не более старые версии 6 не доступны?
Вы имеете в виду, что нам нужно установить более старую версию g ++? –
@Peter Да, возьмите более старую версию g ++, которая ссылается на более раннюю версию libstdC++. Так что – Jan
Я думаю, что это довольно хромой, что для использования более старой версии библиотеки C++ вам нужно жить с компилятором, который потенциально имеет ошибки и отсутствие оптимизаций - особенно потому, что другой способ (с использованием старого компилятора с новой версией библиотеки) - это просто вопрос установки LD_LIBRARY_PATH. –