gpt4 book ai didi

macos - GHC 6.12 和 MacPorts

转载 作者:行者123 更新时间:2023-12-04 10:45:18 25 4
gpt4 key购买 nike

我最近(从二进制安装程序)安装了 GHC 6.12 和 Haskell Platform 2010.1.0.1在我运行 OS X 10.5.8 的英特尔 MacBook 上,最初一切正常。编辑:我必须安装 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

经过一番谷歌搜索,我找到了 a long Haskell-cafe thread讨论这个问题。结果似乎是 MacPorts installs an updated version of libiconv ,并且二进制接口(interface)与系统自带的版本略有不同。因此,如果您尝试与任何 MacPorts 库链接,MacPorts libiconv 也会被链接;并且由于基础库是为链接不同版本的 libiconv 而构建的,所以事情就中断了。我试过 setting LD_LIBRARY_PATH and 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 年底开始的,所以我认为有人有可能有解决方案、变通方法、 absurd 的黑客攻击……任何东西,真的。所以: 有人知道如何让 GHC 6.12 在链接到来自 MacPorts 的库的同时链接到系统 libiconv? 或者,如果做不到这一点,一种使链接不会以其他巧妙方式中断的方法?

最佳答案

当我安装 haskell-platform-2010.1.0.1-i386 并尝试编译 haskell 程序时,我在 MacOSX 10.5.8 上遇到了同样的错误。我的解决方案是在编译程序时将选项“-L/usr/lib”添加到 ghc。我相信这设法让链接器首先在/usr/lib 中搜索 iconv 库,从而为我解决了这个问题。

关于macos - GHC 6.12 和 MacPorts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com