2

Yesod クイック スタート ガイドに従っていますが、モジュールの実行cabal installと関連でエラーが発生します。すでに ghc-7.4.1 と haskell-platform-2012.2.0.0 をインストールしています。yesod develpersistent-sqlite

$ cabal インストール:

パッケージpersistent-sqlite-0.9.0.2を読み込んでいます...リンクしています... o: 不明なシンボル `__warn_memset_zero_len'

ghc: パッケージ「persistent-sqlite-0.9.0.2」をロードできません

cabal: エラー: 一部のパッケージのインストールに失敗しました: ビルド フェーズ中に mate-0.0.0 が失敗しました。例外は: ExitFailure 1

$ yesod 開発:

ghc: /home/roberto/.cabal/lib/persistent-sqlite-0.9.0.2/ghc-7.4.1/HSpersistent-sqlite-0.9.0.2.o: 不明なシンボル `__warn_memset_zero_len'

ghc: パッケージ `persistent-sqlite-0.9.0.2' を読み込めません ビルドに失敗しました。一時停止しています...

$ ghc-pkg リスト:

persistent-sqlite-0.9.0.2
yesod-platform-1.0.5

$ cabal install persistent-sqlite --reinstall

関数「memset」では、

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

/usr/include/bits/string3.h:82:0: 警告: '__warn_memset_zero_len' への呼び出しが属性警告で宣言されました: memset が定数ゼロの長さパラメーターで使用されました。これは、転置されたパラメーターが原因である可能性があります

その行をコメントアウトすると__warn_memset_zero_len();/usr/include/bits/string3.h:82すべてがうまくいきます。コンパイルの警告で停止しないように ghc に指示するなど、適切な解決策はありますか?

4

3 に答える 3

2

実行時の不明なシンボル エラーyesod develは、多くの場合、モジュールをアプリケーションの cabal ファイルに含めなかったことの結果exposed-modulesですother-modules

于 2012-11-02T21:51:43.997 に答える
1

役立つかもしれないいくつかのコメント:

長さがゼロのmemsetエラーは、無視するものではありません。

不明なシンボルエラーは、基になるsqliteライブラリのバージョンが古すぎることを示している可能性があります。

  • sqliteの更新を検討するか、最適化の問題が発生した場合は、gccのバージョンが古すぎないかどうかを確認してください。

  • cabalを使用する代わりに、cabal-devはプロジェクト用のsanboxedライブラリデータベースを提供します。

  • ライブラリを個別にインストールするのではなく、バージョンの依存関係を指定する.cabalプロジェクトファイルにすべてをリストすることをお勧めします。(yesod-platformとpersistent-sqliteには共通の依存関係があります)

乾杯!

于 2012-09-23T14:06:56.353 に答える