Haskell 为什么额外的lib dir不能像堆栈中的LD_LIBRARY_PATH那样工作?

Haskell 为什么额外的lib dir不能像堆栈中的LD_LIBRARY_PATH那样工作?,haskell,haskell-stack,Haskell,Haskell Stack,表面上应该像LD\u LIBRARY\u 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/

表面上应该像
LD\u LIBRARY\u 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
不正确?

我不倾向于使用堆栈,但在构建系统中,命令行标志提供的库路径通常只传递给链接器。观察(使用
main=print=
$ stack --extra-lib-dirs=/foopath/bin/glnxa64 --extra-include-dirs=/foopath/extern/include exec ./foo
Just ""
$
$ LD_LIBRARY_PATH=/foopath/bin/glnxa64 ./foo
Just "/foopath/bin/glnxa64"