我正在使用通过Homebrew安装的Haskell Platform 2011.2.0.1。我已经建立了一个具有相关依赖关系的cabalised项目。可执行文件只是打印传递给它的参数。该程序正确编译和链接,但当程序...
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
相关的问题。有任何想法吗?谢谢!
答案 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上工作。这个问题超出了这个问题的范围。