7

最近、(バイナリインストーラーから) GHC6.12とHaskellPlatform2010.1.0.1をOSX10.5.8を実行しているIntelMacBookにインストールしましたが、最初はすべて正常に機能していました。 編集:、、、cabalおよびalexソースhappyからインストールする必要がありましたが、その後、すべてが正常に機能しているように見えました。しかし、cabal installMacPortsライブラリに依存するパッケージ(たとえば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_PATHDYLD_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にリンクさせる方法を知っている人はいますか? または、それが失敗した場合、リンクが他の巧妙な方法で壊れないようにする方法はありますか?

4

6 に答える 6

9

haskell-platform-2010.1.0.1-i386をインストールし、haskellプログラムをコンパイルしようとすると、MacOSX10.5.8で同じエラーが発生していました。私にとっての解決策は、プログラムをコンパイルするときにオプション「-L / usr/lib」をghcに追加することでした。これにより、リンカーが最初に/ usr / libでiconvライブラリを検索し、問題が解決したと思います。

于 2010-05-10T12:27:30.287 に答える
1

MacPortsをアンインストールすることで問題を解決しました。MacPortsバージョンのlibiconvとそれに依存するライブラリをアンインストールするだけでうまくいくかもしれません。

于 2010-08-30T15:31:04.077 に答える
1

私はこれを認めるのは少し恥ずかしいですが、次のような呪文である程度の成功を収めています。

LIBRARY_PATH=/usr/lib:/opt/local/lib cabal install --ghc-option="-L/usr/lib" SDL-gfx
于 2010-12-09T11:09:40.697 に答える
1

私はによって修正しました:

stack build --ghc-options "-L/usr/lib"
于 2016-06-24T08:47:42.420 に答える
0

これは奇妙なことです。afaikPlatform2010.1.0.1はOSX10.5.8では動作しません。これは私を含む数人の人々によって報告され、検証されています。さらに興味深いことに、あなたによってです

于 2010-04-28T16:16:48.203 に答える
0

おそらくこれはより良いかもしれません cabal configure --extra-lib-dir=/usr/lib それはOSXマウンテンライオンの問題を解決します

于 2013-10-18T12:39:50.387 に答える