Создание разделяемых библиотек Haskell в OS X

Я пытаюсь создать разделяемую библиотеку из исходного кода 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, или строка сборки, которая успешно построила (и использовала) общую библиотеку в OS X, будет оценена по достоинству. Я новичок в Haskell и не знаю, должен ли я продолжать биться головой, предполагая, что проблема на моей стороне, или по разным причинам я не должен ожидать, что это сработает в OS X.

Репозиторий git со всеми комбинациями, которые я пробовал, доступен здесь: https://github.com/bennoleslie/haskell-shared-exampleМне удалось заставить что-то работать для 32-битного ghc, но не для 64-битного. немного еще.

43
задан benno 24 March 2012 в 23:17
поделиться