2015-04-22 3 views
4

Мне нужно развернуть в Linux поле собственного приложения OCaml, которое зависит от нескольких динамических библиотек. Идея состоит в том, чтобы подготовить автономный пакет (без зависимостей от OCaml, OPAM и т. Д.), Который содержит все материалы, и может быть установлен гипотетически в любой современной коробке Linux x84. В идеальном мире будет только один файл, который будет развернут и запущен.Развертывание автономного собственного приложения OCaml

Лучшее, что я могу придумать, это развернуть все необходимые динамические библиотеки (ldd app.native) вместе с исполняемым программным приложением и запустить приложение с помощью сценария bash, который экспортирует LD_LIBRARY_PATH перед вызовом приложения.

Любые идеи, как сделать это лучше, приветствуются.

UPDATE

Некоторые советы:

  • Использование Linux Application Checker для проверки совместимости с различными дистрибутивами Linux.
  • Создайте двоичный пакет на стабильном, но немного устаревшем дистрибутиве (например, CentOS 6 на данный момент), чтобы улучшить совместимость libc.
  • Примеры скриптов для build двоичный пакет и run исполняемый файл.
+1

Я ошибаюсь, думая, что аспект «OCaml» здесь довольно вторичен? То есть что вопрос может заключаться в развертывании автономного двоичного файла в linux. Если нет, не могли бы вы точнее указать, в чем проблема. –

+0

@ DanielBünzli Да, вы правы, OCaml вторичен. – Stas

ответ

6

OCaml со своим статическим подходом уже должен работать из коробки. Все исполняемые файлы OCaml статически связаны с библиотеками OCaml. Что касается зависимостей без OCaml, тогда вы можете развернуть их с помощью сценария оболочки, который устанавливает LD_LIBRARY_PATH, или вы можете использовать rpath, или вы можете dlopen ваших библиотек, если это имеет смысл для вас. В любом случае я настоятельно рекомендую вам не лечить libc таким образом, то есть не пытайтесь установить свою собственную версию libc.

+0

Можете ли вы объяснить, в чем причина не связывания libc statically, пожалуйста? Благодаря! –

+2

Бинарная версия libc зависит от системы –

Смежные вопросы