Ошибка mkTextEncoding при запуске программы на Haskell, скомпилированной на Mac - PullRequest
1 голос
/ 27 ноября 2011

Я использую Haskell Platform 2011.2.0.1, установленную через Homebrew. Я создал проект в кабальном режиме с соответствующими зависимостями. Исполняемый файл ничего не делает, кроме как распечатывает переданные ему аргументы. Программа компилируется и ссылки корректно, но когда программа ...

Main.hs:

  main = do
    args <- getArgs
    putStrLn "Here are your arguments!:"
    forM_ args putStrLn

... бежит, я получаю ...

Трассировка:

$ cabal configure
Resolving dependencies...
Configuring foo-0.1...

$ cabal build
Preprocessing executables for foo-0.1...
Preprocessing test suites for foo-0.1...
Building foo-0.1...

$ dist/build/foobar/foobar some arguments
foobar: mkTextEncoding: failed (Unknown error: 0)
FAIL: 1

Соответствующая часть моей переменной PATH гласит: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/texbin:/usr/X11/bin

Я думаю, что это проблема, связанная с libiconv. Есть идеи? Спасибо!

1 Ответ

1 голос
/ 03 декабря 2011

Благодаря вкладу Даниила и Джона я нашел решение своей проблемы.

В моем случае foobar: mkTextEncoding: failed (Unknown error: 0) FAIL: 1 было вызвано хитрой связью с библиотекой gd.

Проблема может быть обнаружена при проверке используемых двоичных библиотек.

$ otool dist/build/foobar/foobar -L
foobar:
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
    libgd.dylib (compatibility version 0.0.0, current version 0.0.0)
    /usr/local/lib/libpng12.0.dylib (compatibility version 47.0.0, current version 47.0.0)
    /usr/local/lib/libjpeg.8.dylib (compatibility version 12.0.0, current version 12.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
    /usr/local/lib/libfontconfig.1.dylib (compatibility version 6.0.0, current version 6.4.0)
    /usr/local/lib/libfreetype.6.dylib (compatibility version 15.0.0, current version 15.0.0)
    /usr/lib/libexpat.1.dylib (compatibility version 7.0.0, current version 7.2.0)
    /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)

Нечетная строка, конечно, показывает нам виновника:

    libgd.dylib (compatibility version 0.0.0, current version 0.0.0)

Версия и местоположение выглядят странно. Удаление зависимости от gd заставило мою программу снова работать. Однако мне не удалось заставить libgd работать на моем Mac. Эта проблема выходит за рамки этого вопроса.

...