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

Рейтинг: 0Ответов: 2Опубликовано: 28.01.2015

Компьютер разработчика CentOS 7. Как заставить работать скомпилированную C++ программу в CentOS 6? Выдаёт ошибки несоответствия версий библиотек...

Ответы

▲ 2

Варианты:

  1. Разработчик отдает исходники и они компилируются на целевой платформе
  2. Разработчик ставит себе в систему библиотеки совместимости с centos 6 и линкуется с ними при компиляции
  3. Разработчик ставит себе на машину centos 6 и компилирует бинарник внутри centos 6 (через lxc это сделать относительно просто. Через chroot можно сделать чтобы виртуалка вообще не запускалась, а только использовалось её окружение для компиляции).
  4. Компилировать статически (бинарник может стать более увесистым, возможно придется наткнуться на какие-то грабли, например для php скомпилированным статически в окружении centos 5 x86 не работают dns-запросы если запустить его на ubuntu 14.04 x64)

Дальше скорее костыли:

  1. Разработчик отдает бинарник вместе с библиотеками, которые ставятся в вашу систему или в окружение (думаю могут быть проблемы аналогичные п.4)
  2. Скомпилировать нужные версии библиотек для centos 6 и поставить их в систему.
▲ 1

Если версии библиотек стоят другие, то боюсь, что никак. Если код ссылается на одно, а там другое, то как оно заработает?)

Ставьте одинаковые версии используемых библиотек. Или компилируйте статически (то есть чтобы код библиотеки был в вашей программе и не нуждался в библиотеках системы).