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 を実行するステップと関係がありますか?