我一直在ghci环境中使用hMatrix包,一切正常(我可以导入Numeric.LinearAlgebra.HMatrix)。但是,当我尝试在脚本中导入和使用相同的东西时,一切都会中断(为了便于阅读,我略微删除了错误消息(更长的_base_GHCiIO错误列表))。例如,文件中的这两行会在下面创建错误。有谁知道原因是什么?我在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)
答案 0 :(得分:1)
您可能已安装了使用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。