2012-07-14 28 views
2

我在關注Yesod quick start guide,並且我在persistent-sqlite模塊中出現了錯誤cabal installyesod devel。我已經安裝了ghc-7.4.1和haskell-platform-2012.2.0.0。'yesod devel'中的構建失敗

$小集團安裝:

Loading package persistent-sqlite-0.9.0.2 ... linking ... ghc: /home/roberto/.cabal/lib/persistent-sqlite-0.9.0.2/ghc-7.4.1/HSpersistent-sqlite-0.9.0.2.o: unknown symbol `__warn_memset_zero_len'

ghc: unable to load package `persistent-sqlite-0.9.0.2'

cabal: Error: some packages failed to install: mate-0.0.0 failed during the building phase. The exception was: ExitFailure 1

$耶索德devel的:

ghc: /home/roberto/.cabal/lib/persistent-sqlite-0.9.0.2/ghc-7.4.1/HSpersistent-sqlite-0.9.0.2.o: unknown symbol `__warn_memset_zero_len'

ghc: unable to load package `persistent-sqlite-0.9.0.2' Build failure, pausing...

$ GHC-PKG列表:

persistent-sqlite-0.9.0.2 
yesod-platform-1.0.5 

$小集團安裝持久sqlite的--reinstall

In function ‘memset’,

inlined from ‘exprDup’ at cbits/sqlite3.c:68471:0: 

/usr/include/bits/string3.h:82:0: warning: call to ‘__warn_memset_zero_len’ declared with attribute warning: memset used with constant zero length parameter; this could be due to transposed parameters

如果我評論這條線,__warn_memset_zero_len();/usr/include/bits/string3.h:82,一切順利。有沒有適當的解決方案,比如告訴ghc不要停止編譯警告?

+0

我有一個看的持久源碼包在$ HOME/.cabal /包.cabal文件,查找應引起問題'-Werror' GHC選項,但我發現一個相反,「壁」。對於我創建的yesod項目也是如此,稱爲'mate'; mate.cabal沒有任何'-Werror'。 – rturrado 2012-07-18 17:33:14

回答

1

我是問在#GHC-dev的Freenode上IRC同樣的問題,被告知這個錯誤發生的原因是模板哈斯克爾機制的一些問題,使用GHCI預編譯的東西。這正好發生在試圖預編譯SQLite庫時。

我還被告知,這應該用即將發佈的新版GHC修復:v7.8.x(但它仍然需要一些時間才能將其作爲新的Haskell平臺的一部分)。

而且我很驚訝的是,問題是有這麼長的時間。

+0

謝謝。關閉這個問題,因爲它現在已經打開了很長一段時間。這個答案對我來說似乎相當公平。 – rturrado 2016-08-12 06:48:14

1

一些評論,可以幫助:

一個memset誤差爲零長度是不是忽視。

未知的符號錯誤可能會說底層的sqlite庫版本太舊。

  • 考慮更新sqlite,或者在優化問題的情況下檢查gcc版本是否不太舊。

  • 代替使用cabal,cabal-dev爲您的項目提供了sanboxed庫數據庫。

  • 而是單獨安裝庫,最好將它們全部列出在.cabal項目文件中指定的版本依賴性。 (yesod平臺和persistent-sqlite有相關性)

乾杯!

2

運行時出現未知符號錯誤yesod devel通常是因爲未在應用程序的cabal文件中將模塊包含在exposed-modulesother-modules中。