2011-03-06 4 views
1

Я схожу с ума, пытаясь понять, как создать двоичный файл в OCaml, который не нуждается в чем-то слишком конкретном (например, что-то, что установлено в качестве инструментов сборки OCaml).Построение автономной программы OCaml

Я использую и все Бонус-байку кажется достаточно прохладно, работая на моей машине, а также связывающий с LIBS

OCAMLPACKS[] = str unix batteries 

работает довольно хорошо, но если я пытаюсь распространять исполняемый файл он дает мне следующую ошибку:

Fatal error: exception Sys_error("/usr/godi/share/camomile/database/general_category.mar: No such file or directory") 

да я использую GODI, но я не вижу каких-либо видимых причин для этой ошибки, может кто-нибудь просветить меня? Кроме того, если у вас есть какие-либо трюки в отношении создания автономных приложений, пожалуйста, скажите мне (я уже спорю с GODI, который скомпилировал everylib только в его версии x64, и теперь я не могу выполнить исполняемые файлы x86)

аванс

ответ

3

Для библиотеки camomile требуется время выполнения. См. README.txt для получения информации о том, как его настроить. В частности, для выполнения работы требуются файлы времени выполнения (отсутствует .mar).

+0

Должен ли я просто предоставить все файлы 'mar' в указанном каталоге вместе с исполняемым файлом? Но есть ли способ заставить другую папку вместо этого искать в моей «локальной» папке GODI? – Jack

+0

Вы можете попробовать использовать модуль [CamomileLibraryDyn] (http://camomile.sourceforge.net/dochtml/CamomileLibraryDyn.html) и настроить 'CAMOMILE_DATADIR' в среде. Если вы используете ромашку через батарейки, вы должны проверить, как батареи инициализируют ромашку. – tonio

2

Я не использую OMake, ни батареи, ни GODI, ни Camomile. Но из того, что я вижу, проблема, похоже, исходит из того факта, что вы связываетесь с Батарейками, которые, как я полагаю, должны использовать Camomile внутри, а Camomile полагается на данные, хранящиеся в файловой системе, чтобы обеспечить некоторые из своих сервисов. Он не загружается, если эти данные отсутствуют на конечном хосте.

Обратите внимание, что отправка чисто статических excutables - это то, что довольно просто сделать с OCaml. Но для этого вам нужно рассмотреть, какие библиотеки вы используете (например, если вы используете camomille, вам придется отправлять файлы поддержки).