为什么 extra-lib-dirs 在堆栈中不能像 LD_LIBRARY_PATH 那样工作?
Why might extra-lib-dirs not work like LD_LIBRARY_PATH in stack?
--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
不正确?
我不倾向于使用 Stack,但在构建系统中,命令行标志提供的库路径通常只传递给链接器。观察(main = print =<< lookupEnv "LD_LIBRARY_PATH"
):
$ 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"
--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
不正确?
我不倾向于使用 Stack,但在构建系统中,命令行标志提供的库路径通常只传递给链接器。观察(main = print =<< lookupEnv "LD_LIBRARY_PATH"
):
$ 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"