3

cabal2nix を使用して、NixOS で内部 Haskell プロジェクトを構築しようとしています。wgetこれは、Ubuntuでソースを実行してビルドする外部ライブラリをラップします (したがって依存します) make && make install && ldconfig。したがって、cabal がプログラムをビルドしようとすると、明らかに適切なヘッダー ファイル (/usr/local/include/ta-libまたはにあります) を見つけることができます/usr/include/ta-lib

Nix では、ソースを取得してビルドする方法を指定するために .nix ファイルをセットアップし、次に Nix が分離されたビルド環境をセットアップするというプロセスを理解しています。これを行うと、外部ライブラリが取得され、適切に構築されます。

Nix が構成ステップを実行すると、問題ないように見えます。

configureFlags: --verbose --prefix=/nix/store/fwpw03bd0c2m5yb7v2wc7g6f0qj912ra-talib-0.1.0.0 --libdir=$prefix/lib/$compiler --libsubdir=$pkgid --with-gcc=gcc --package-db=/tmp/nix-build-talib-0.1.0.0.drv-0/package.conf.d --ghc-option=-optl=-Wl,-rpath=/nix/store/fwpw03bd0c2m5yb7v2wc7g6f0qj912ra-talib-0.1.0.0/lib/ghc-7.10.2/talib-0.1.0.0 --enable-split-objs --disable-library-profiling --disable-executable-profiling --enable-shared --enable-library-vanilla --enable-executable-dynamic --enable-tests --extra-include-dirs=/nix/store/gvglncjgd5yif9bc03qalmp2mrjp524n-ta-lib-0.4.0/include --extra-lib-dirs=/nix/store/gvglncjgd5yif9bc03qalmp2mrjp524n-ta-lib-0.4.0/lib

Nixストアで正しいパスに設定し--extra-include-dirsます。--extra-lib-dirsただし、ビルドに行くと文句を言いますが、

Setup: Missing dependency on a foreign library:
* Missing C library: ta_lib

残念ながら、カバールが外国の図書館が存在するかどうかをどのように判断しているのかわかりません。私はここを読んだ ( Haskell how to resolve cabal error: Missing dependencies on foreign libraries? ) cabal は、見つかったヘッダーごとに構成される C プログラムをビルドしてリンクしようとすることを読みました。そのため、どういうわけか正しいライブラリが見つかりません。

なにが問題ですか?これは、Ubuntu で ldconfig を実行するステップと関係がありますか?

4

1 に答える 1