最近、(バイナリインストーラーから) GHC6.12とHaskellPlatform2010.1.0.1をOSX10.5.8を実行しているIntelMacBookにインストールしましたが、最初はすべて正常に機能していました。 編集:、、、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
グーグルをした後、私はこの問題について議論している長いHaskell-cafeスレッドを見つけました。結果として、MacPortsはlibiconvの更新バージョンをインストールし、バイナリインターフェイスはシステムに含まれているバージョンとは少し異なります。したがって、MacPortsライブラリとリンクしようとすると、MacPortslibiconvもリンクされます。また、ベースライブラリは異なるバージョンの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年の終わりからのものだったので、誰かが解決策、回避策、ばかげたハックなどを持っている可能性があると思います。つまり、MacPortsからライブラリにリンクすると同時にGHC 6.12をシステムlibiconvにリンクさせる方法を知っている人はいますか? または、それが失敗した場合、リンクが他の巧妙な方法で壊れないようにする方法はありますか?