@sitev_ru
sitev.ru - мой блог ...

Как C++ программу скомпилированную в CentOS 7 заставить работать в CentOS 6?

Компьютер разработчика CentOS 7. Как заставить работать скомпилированную C++ программу в CentOS 6? Выдаёт ошибки несоответствия версий библиотек...
  • Вопрос задан
  • 2481 просмотр
Пригласить эксперта
Ответы на вопрос 3
@hiloader
Вариантов несколько
1) Линкуйте приложение с флагом -static. Для этого вам придется использовать только статические сторонние библиотеки.
2) Соберите кросс-компилер, в котором соберите ту же версию libc, что и в centos 6, тогда можно будет линковать статитикой только рантаймы c++ и gcc ( libstdc++.a, libgcc.a) через флаги -static-libgcc и -static-libstdc++
На семерке glibc старше, а у неё совместимость только сверху-вниз. Решите вопрос сначала с ней.
3) Заведите билд-сервер на 6-ке, пусть релизные билды собираются там, соберите компиллер какой нужен вам, проблема с glibc исчезнет сама собой. Ну и да, линкуйте рантаймы статикой.
Ответ написан
Комментировать
AxisPod
@AxisPod
Ну проще поставить виртуалку с CentOS 6 разработчику.
Ответ написан
donkaban
@donkaban
Умею рисовать тени
1. Для начала покажите выхлоп ld
2. Потом выхлоп objdump -T

Если невозможно пересобрать - переносите на целевую платформу нужные библиотеки и делайте сендбокс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы