bbarker:
--extra-LIB-dirsのように表向きに機能するはずLD_LIBRARY_PATH
が、一緒に使用する場合stack exec
、私は異なる結果を参照してください。
$ stack --extra-lib-dirs=$MATLAB_PATH/bin/glnxa64 --extra-include-dirs=$MATLAB_PATH/extern/include --nix exec matlab-engine-test
/home/bebarker/workspace/haskell-matlab/.stack-work/install/x86_64-linux-nix/24c5769e9013838d87aa76fb4cdd10a09798b6904a6faa380de6fe6949e2c952/8.6.5/bin/matlab-engine-test: error while loading shared libraries: libmx.so: cannot open shared object file: No such file or directory
$ LD_LIBRARY_PATH=$MATLAB_PATH/bin/glnxa64 /home/bebarker/workspace/haskell-matlab/.stack-work/install/x86_64-linux-nix/24c5769e9013838d87aa76fb4cdd10a09798b6904a6faa380de6fe6949e2c952/8.6.5/bin/matlab-engine-test
matlab-engine-test: user error (engOpen)
LD_LIBRARY_PATH
(明らかに、私はそこに対処するための別の無関係な問題を持っているが)、この場合に予想されるように振る舞います。私は別のオプションを探しているべきであるか私が使用しています--extra-lib-dirs
間違って?
トーマス・M. Dubuisson:
私は、スタックを使用する傾向がありませんが、ビルドシステムでコマンドラインフラグが提供するライブラリーのパスは通常はリンカに渡されます。守って(とmain = print =<< lookupEnv "LD_LIBRARY_PATH"
):
$ stack --extra-lib-dirs=/foopath/bin/glnxa64 --extra-include-dirs=/foopath/extern/include exec ./foo
Just ""
$
2番目のやったことと比較します:
$ LD_LIBRARY_PATH=/foopath/bin/glnxa64 ./foo
Just "/foopath/bin/glnxa64"