hMatrix 在文件中中断,可能是什么原因?

hMatrix breaks in a file, what could be the cause?

我一直在 ghci 环境中使用 hMatrix 包,一切正常(例如我可以导入 Numeric.LinearAlgebra.HMatrix)。但是,当我尝试在脚本中导入和使用相同的东西时,一切都会中断(为了便于阅读,我稍微截断了错误消息(_base_GHCiIO-errors 的列表更长))。例如,文件中的这两行会产生以下错误。有谁知道可能是什么原因?我在 mac OS X Yosemite.

import Numeric.LinearAlgebra.HMatrix

main = print ((2><1) [1.0::Float,1.0])

$ ghc 2_12.hs 
[1 of 1] Compiling Main             ( 2_12.hs, 2_12.o )
Linking 2_12 ...
Undefined symbols for architecture x86_64:
  "_iconv", referenced from:
  _hs_iconv in libHSbase-4.7.0.2.a(iconv.o)
 (maybe you meant: _hs_iconv,
  _base_GHCziIOziEncodingziIconv_iconvEncoding9_info ,
  _base_GHCziIOziEncodingziIconv_iconvEncoding8_info,
  _base_GHCziIOziEncodingziIconv_iconvEncoding9_closure ,
  _hs_iconv_open , _hs_iconv_close ,
  "_iconv_close", referenced from:
  _hs_iconv_close in libHSbase-4.7.0.2.a(iconv.o)
 (maybe you meant: _hs_iconv_close)
 "_iconv_open", referenced from:
 _hs_iconv_open in libHSbase-4.7.0.2.a(iconv.o)
 (maybe you meant: _hs_iconv_open)
 "_locale_charset", referenced from:
  _localeEncoding in libHSbase-4.7.0.2.a(PrelIOUtils.o)
 ld: symbol(s) not found for architecture x86_64
 clang: error: linker command failed with exit code 1 (use -v to see     
 invocation)

您可能已随 MacPorts 安装了 libiconv。 MacPorts libiconv 中的定义(恼人地)与 OS X libiconv 中的定义有些不同。 Here 是更多的解释。

我遇到了同样的问题,我的解决方案是将 --extra-lib-dirs=/usr/lib 参数传递给 cabal(/usr/lib 是 OS X 保留 libiconv 的地方) .您可以在编译前使用 cabal configure --extra-lib-dir=/usr/lib,或者很可能还使用 cabal install --extra-lib-dir=/usr/lib。您还可以将 extra-lib-dirs 语句添加到您的 cabal 文件中。 /usr/lib 总是包含在内,但通常首先搜索 MacPorts 库目录:通过添加 --extra-lib-dirs 参数,确保 ghc 在搜索 MacPorts 库目录之前搜索 /usr/lib。