Сборка с помощью clang для старых версий Ubuntu
Итак, проблема началась, когда я недавно обновил свой Ubuntu Vivid (15.04). Сейчас clang-3.5
зависит от libstdc++-4.9
(вместо предыдущей версии 4.8
) и мои скомпилированные программы не работают на Trusty (14.04):
./my_app: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./my_app)
И на машине разработки, и на целевой машине g++
а также gcc
версия 4.8.4
установлено. Но новая версия clang добавляет зависимость от версии, необходимую для libstdc++6
на GLIBCXX_3.4.20
который существует только на разработке, а не на целевой машине.
Есть идеи, как решить эту проблему?
ОБНОВЛЕНИЕ:
Здесь есть решение, предлагающее статическую ссылку на libstdc++
и здесь хорошо читается, исследуя плюсы и минусы такого подхода. Но есть ли другие возможности?
1 ответ
Если ваша проблема еще не решена, я могу предложить два варианта, помимо статической ссылки:
- Объедините все необходимые библиотеки с вашими приложениями и настройте
LD_LIBRARY_PATH
и / илиrpath
для ваших двоичных файлов. - Если вы разрабатываете серверные приложения, вы можете также отправить их как изображения Docker, унаследованные от Ubuntu Vivid.