私はパッケージをHackageからビルドしようとしています。それは正常に構築されますが、ghciはロードできません。苦情がある:Hackageパッケージの未定義シンボル `double-conversion`
Loading package double-conversion-0.2.0.0 ... linking ... <interactive>:
/home/me/.cabal/lib/double-conversion-0.2.0.0/ghc-7.0.4/HSdouble-conversion-0.2.0.0.o:
unknown symbol `_ZNK17double_conversion6Double5valueEv'
nm
出力は、シンボルが弱いであることを示しています
nm /home/me/.cabal/lib/double-conversion-0.2.0.0/ghc-7.0.4/HSdouble-conversion-0.2.0.0.o \
| grep _ZNK17double_conversion6Double5valueEv
00000000 W _ZNK17double_conversion6Double5valueEv
これは、ファイル内の唯一の弱いシンボルであり、実際に、私の知る限り、 GHCでコンパイルされたパッケージの世界全体で
問題のある関数は、明らかにC++で書かれ、double-conversion/src/double.h
にインラインで定義されたFFIの関数です。そこには唯一のインライン関数ではありませんが、このクラスだけがweakというラベルが付けられています。
一時的な対策として、関数をアウトラインで移動し、パッケージがロードされるようになりました。しかしそこには明らかに何らかの問題があります。なぜこの機能が弱いのですか?なぜ他の機能がないのですか? ghcは弱い記号で文句を言うべきですか?バグを報告する必要がありますか?もしそうなら、誰がそれを得るべきですか(ダブルコンバージョン、gcc、ghc、他の人ですか?)
システムデータ:Gentoo Linux、gcc-4.4.5、ghc-7.0.4、cabal -1.10.2.0。
'text-format'をインストールしようとすると、どんなエラーが発生しますか?おそらくYesodはTemplate Haskellから二重変換を使用しようとしますか? –
オーバーレイを試しましたか? – alternative
@monadic:私は実際にオーバーレイを使用しています。失敗した場合にのみ、ローカルの 'cabal install'を試しました。エラーメッセージは同じです。 @Mikhail Glushenkov:実際に 'text-format'をインストールできますが、' yesod'はインストールできません。エラーメッセージは同じです。 –