运行在Mac上编译的Haskell程序时出现mkTextEncoding错误

时间:2011-11-27 11:15:06

标签: haskell homebrew haskell-platform libiconv

我正在使用通过Homebrew安装的Haskell Platform 2011.2.0.1。我已经建立了一个具有相关依赖关系的cabalised项目。可执行文件只是打印传递给它的参数。该程序正确编译和链接,但当程序...

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 个答案:

答案 0 :(得分:1)

感谢Daniel和John的意见,我找到了解决自己问题的方法。

在我的情况下,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上工作。这个问题超出了这个问题的范围。