Я пытаюсь создать общую библиотеку из исходного кода Haskell.
Я пробовал следовать инструкции здесь: http://weblog.haskell.cz/pivnik/building-a-shared-library-in-haskell/, но мне просто не повезло.
Когда я компилирую с 64-разрядным Haskell (ghc 7.0.4 от 2011.4.0.0), я получаю следующую ошибку:
ld: pointer in read-only segment not allowed in slidable image, used in
___gmpn_modexact_1c_odd
В качестве альтернативы я также попробовал 32-битную версию и в зависимости от точных флагов, которые я использую для ссылок, получаю такие ошибки, как:
Library not loaded: /usr/local/lib/ghc-7.0.4/base-4.3.1.0/libHSbase-4.3.1.0-ghc7.0.4.dylib
Мне удалось получить немного больше, добавив -lHSrts в линию компоновщика. Это позволило мне успешно связывать и загружать библиотеку, но я не смог найти имя функции, используя dlsym (или вручную используя nm | grep)
Приветствуются любые подсказки, оценка файла make или build, которая успешно построила (и использовала) общую библиотеку в OS X. Я совершенно новичок в Haskell и не знаю, должен ли я продолжать стучать головой, полагая, что проблема на моем конце, или по разным причинам я не должен ожидать, что это будет работать на OS X.
A git repo со всеми комбинациями, которые я пробовал, доступен здесь: https://github.com/bennoleslie/haskell-shared-example Мне удалось получить что-то, работающее для 32-битного ghc, но еще не 64-бит.