Ant*_*sky 7 macos haskell ghc conflicting-libraries libraries
我最近在运行OS X 10.5.8的英特尔MacBook上安装了(来自二进制安装程序)GHC 6.12和Haskell Platform 2010.1.0.1,最初,一切正常. 编辑:我必须安装cabal,alex并happy从源,但在那之后,一切似乎都工作正常.然而,我发现,如果我使用的cabal install安装包,它取决于MacPorts的库(例如,cabal install --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include gd),东西GHCI做工精细,但如果我尝试编译,我得到的错误
Linking test ...
Undefined symbols:
"_iconv_close", referenced from:
_hs_iconv_close in libHSbase-4.2.0.0.a(iconv.o)
"_iconv", referenced from:
_hs_iconv in libHSbase-4.2.0.0.a(iconv.o)
"_iconv_open", referenced from:
_hs_iconv_open in libHSbase-4.2.0.0.a(iconv.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
经过一些谷歌搜索,我发现了一个很长的Haskell-cafe线程讨论这个问题.结果似乎是MacPorts安装了libiconv的更新版本,而二进制接口与系统附带的版本略有不同.因此,如果您尝试链接任何MacPorts库,MacPorts libiconv也会被链接; 由于基础库是为了链接不同版本的libiconv而构建的,因此事情就会破裂.我已经尝试设置LD_LIBRARY_PATH并DYLD_LIBRARY_PATH添加更多标志以试图让它/usr/lib再次查看(例如 cabal install --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include --extra-lib-dirs=/usr/lib --extra-include-dirs=/usr/include gd),但都没有奏效.卸载MacPorts libiconv并不是一个真正的选择,因为我安装了一堆依赖它的端口 - 包括我希望Haskell链接到的一些端口,比如gd2.
从我在网上看到的结果来看,结果似乎是"你被剔骨":在使用GHC进行编译时,你无法链接任何MacPorts库,而且似乎没有解决方案.然而,那个帖子是从2009年底开始的,所以我认为有人有机会找到解决方案,解决方法,荒谬的黑客......真的.所以:有没有人知道如何让GHC 6.12在链接到MacPorts的库的同时链接到系统libiconv? 或者,如果失败了,一种使链接不以其他聪明的方式打破的方法?
当我安装haskell-platform-2010.1.0.1-i386并尝试编译haskell程序时,我在MacOSX 10.5.8上遇到了同样的错误.我的解决方案是在编译程序时向ghc添加选项"-L/usr/lib".我相信这设法让链接器首先搜索/ usr/lib为iconv库解决了我的问题.
| 归档时间: |
|
| 查看次数: |
1895 次 |
| 最近记录: |