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

时间:2015-09-15 11:09:23

标签: haskell hmatrix

我一直在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)

1 个答案:

答案 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。