GLPKの自作Haskellバインディング(まだつくり始めたばかり)を、MacPortsでインストールしたGLPKと組み合わせて使うと、ghciだと普通に使えるけど、それを使う実行ファイルをghcでビルドしようとすると以下のような不可解なエラーが出て悩んでしまった。何故、iconv……?
Undefined symbols:
"_locale_charset", referenced from:
_localeEncoding in libHSbase-4.3.1.0.a(PrelIOUtils.o)
"_iconv", referenced from:
_hs_iconv in libHSbase-4.3.1.0.a(iconv.o)
(maybe you meant: _hs_iconv, _hs_iconv_open , _hs_iconv_close )
"_iconv_close", referenced from:
_hs_iconv_close in libHSbase-4.3.1.0.a(iconv.o)
(maybe you meant: _hs_iconv_close)
"_iconv_open", referenced from:
_hs_iconv_open in libHSbase-4.3.1.0.a(iconv.o)
(maybe you meant: _hs_iconv_open)
調べてみると、GLPKの自作Haskellバインディングのパッケージを cabal configure --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include とかして作っていて、そのせいでHaskell PlatformのGHCのbaseパッケージの期待する/usr/libのlibiconvではなく、MacPortsの/opt/local/libのlibiconvを参照するようになってしまっているようだ。
これはMacPortsが酷いと思うが、どうしたものかなぁ……
http://stackoverflow.com/questions/2726248/ghc-6-12-and-macports
http://www.haskell.org/pipermail/glasgow-haskell-users/2011-March/020160.html
なんかで関連する話がある。
とすることで回避できた。