我最近在運行OS X 10.5.8的英特爾MacBook上安裝了(從二進制安裝程序)GHC 6.12和Haskell Platform 2010.1.0.1,最初,一切正常。 編輯:我不得不從源安裝cabal
,alex
和happy
,但那,一切似乎工作正常。然而,我發現,如果我用cabal install
安裝一個軟件包依賴於一個MacPorts的庫(如,cabal install --extra-lib-dirs=/opt/local/lib --extra-include-dirs=/opt/local/include gd
),東西GHCI做工精細,但如果我嘗試編譯,我得到的錯誤GHC 6.12和MacPorts
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,二進制接口與系統中包含的版本略有不同。因此,如果您嘗試鏈接任何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年底開始的,所以我認爲有人有機會得到解決方案,解決方法,可笑的黑客......任何事情,真的。所以:是否有人知道如何讓GHC 6.12鏈接到系統libiconv,同時鏈接到來自MacPorts的庫?或者,如果沒有這樣做,一種方法使鏈接不以其他一些聰明的方式打破?
你安裝二進制哈斯克爾平臺,還是MacPorts的建立?或者源代碼構建? – 2010-04-28 02:48:59
GHC和Haskell平臺的二進制安裝程序。我將編輯該問題以反映這一點。 – 2010-04-28 03:18:53
我從源代碼構建的GHC 6.12.3中遇到了這個問題。 – 2010-07-04 18:21:22