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

Если ваша проблема еще не решена, я могу предложить два варианта, помимо статической ссылки:

  1. Объедините все необходимые библиотеки с вашими приложениями и настройте LD_LIBRARY_PATH и / или rpath для ваших двоичных файлов.
  2. Если вы разрабатываете серверные приложения, вы можете также отправить их как изображения Docker, унаследованные от Ubuntu Vivid.
Другие вопросы по тегам