Скомпилируйте C ++ для различных версий Ubuntu - PullRequest
8 голосов
/ 17 февраля 2012

Мы создаем программу под Linux, которая прекрасно работает в определенной версии Ubuntu.Но мы бы хотели, чтобы один и тот же двоичный файл работал на Ubuntu 10.04 и 11.10.Было бы вполне нормально построить приложение на платформе 10.04.Но когда я делаю это, у меня появляются зависимости от конкретных версий библиотеки (например, libboost_thread.so.1.40.0), которые недоступны в 11.10, потому что используются более новые версии.Система построена с использованием QMake.

Я ищу учебник или отправную точку для решения этих конфликтов зависимостей для нескольких платформ Ubuntu.

1 Ответ

3 голосов
/ 17 февраля 2012

Если больше никто не захочет это сделать, я тоже могу что-нибудь сделать.

Я собираюсь сделать несколько предположений.

  • Вы распространяете двоичное / закрытое приложение
  • Вы хотите распространять его самостоятельно

Таким образом исключение всего "просто позвольте дистрибутиву / пользователям создавать его для своих настроек".

Глядя на то, как другие решают подобные проблемы, я вижу, что обычно включают общие библиотеки в ваше приложение, а затем используют загрузчик / упаковщик, как вы хотите его назвать, скрипт, который изменяет среду перед запуском приложения. , В частности, они изменяют LD_LIBRARY_PATH для включения папки / lib, включенной в приложение.

Сценарий может быть простым.

#!/bin/sh

LD_LIBRARY_PATH=./lib ./myAppReal

Именно так я решил распространять приложение Qt4 среди пользователей, у которых есть дистрибутивы, поставляемые не новее, чем Qt-3.3.6 (в 2009 году ... серьезно). Редактировать: Могу также сказать, что пользователи имеют в виду 5-ти человек в компании, которые платят за разработку, специализация провала с нашей стороны не требует от них более конкретной информации, когда они говорят о кроссплатформенности в современных операционных системах.

Теперь кто-то, вероятно, найдет с этим около дюжины вещей, но это хорошо, я могу обновляться и учиться по ходу дела.

РЕДАКТИРОВАТЬ: Как сказал JimR, это имеет последствия для безопасности: если вы оставите свою папку libs доступной для чтения всем, кто-то может использовать ее для внедрения вредоносного кода в ваше приложение. В зависимости от того, как вы планируете развертывание, это может быть или не быть реальной проблемой, но вы должны знать об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...