Сборка с помощью 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.