我正試圖從Hackage構建double-conversion
包。它建立好,但ghci無法加載它。投訴:Hackage包中的未定義符號`雙重轉換'
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編譯軟件包的世界裏。
有問題的函數顯然是FFI,用C++編寫,並在內聯定義在double-conversion/src/double.h
。它不是唯一的內聯函數,但只有這個被標記爲弱。
作爲一項臨時措施,我已經將該功能移出了行,並且現在加載了該軟件包。但是那裏顯然存在一些問題。爲什麼這個功能很弱?爲什麼其他功能不是? ghc應該抱怨軟弱的符號嗎?我應該提交一個bug,如果有的話,誰應該得到它(雙轉換,gcc,ghc,別人?)
系統數據:Gentoo Linux,gcc-4.4.5,ghc-7.0.4,cabal -1.10.2.0。
如果您嘗試安裝「文本格式」,會出現什麼錯誤?也許Yesod嘗試使用Template Haskell進行雙重轉換? –
你有沒有嘗試使用覆蓋? – alternative
@monadic:我實際上使用覆蓋,只有在失敗後我嘗試了本地'cabal install'。錯誤消息是相同的。 @Mikhail Glushenkov:我實際上可以安裝'text-format',但不是'yesod'。錯誤消息是相同的。 –