У меня есть библиотека, которая зависит от некоторых других библиотек и, конечно же, времени исполнения haskell. Он экспортирует C API. Я хочу построить его таким образом, чтобы он был полностью автономным, и пользователю не пришлось бы беспокоиться об установке haskell, cabal и всех зависимостей.Как создать автономную библиотеку с помощью cabal?
ответ
он был полностью автономным и пользователь не будет возиться с установкой Haskell, заговорщиков и все зависимости
Затем вы должны распространять свою библиотеку со всеми его зависимостями - компилятор Haskell, среда выполнения, библиотеки C, Cabal, зависимые библиотеки. Это нетривиальная задача - вы сами сворачиваете Haskell Platform.
Вы можете изменить источник HP и сгенерировать установщики. Они были бы фактически отдельными установщиками для вашей библиотеки.
Я не совсем понимаю, почему так. Я могу создать тестовый файл C, вызывающий мою библиотеку, путем явного перечисления всех файлов зависимостей .a. Разве не удалось бы просто упаковать все зависимости в один большой .a и распространить его как мою библиотеку? Мне нужна только моя библиотека для вызова из кода C, а не кода haskell. – user1887615
Да, вы могли бы написать собственный установщик/комплектщик, который принимает все ваши зависимости и связывает их. –
Как вы представляете, как пользователи библиотеки взаимодействуют с библиотекой? Один из вариантов - сделать пакеты (rpm, deb, dmg и т. Д.), А другой вариант - добавить сотни мегабайт инфраструктуры построения в исходный дистрибутив вашей библиотеки. –
@ ThomasM.DuBuisson Я думаю, он хочет что-то аналогичное многопроектному решению. –
@ ThomasM.DuBuisson Они свяжут свой код с библиотекой с помощью gcc, как и ghc, когда я вызываю его так: 'ghc -no-hs-main -static test.c libMylibrary.a ' –
user1887615