首页 > 解决方案 > 鱼壳似乎忽略了 LD_LIBRARY_PATH?

问题描述

我需要在启动darknet之前LD_LIBRARY_PATH设置CUDA。看起来像这样:

echo $LD_LIBRARY_PATH
/usr/local/cuda/lib64

当应用程序启动时,它无法加载它应该在该目录中找到的库:

./darknet 
./darknet: error while loading shared libraries: libcudart.so.10.0:
cannot open shared object file: No such file or directory

但是该库肯定在该目录中:

ldd /usr/local/cuda/lib64/libcudart.so.10.0
    linux-vdso.so.1 =>  (0x00007ffe7bf2d000)
    ...etc...

我假设我没有在鱼中正确设置 LD_LIBRARY_PATH。这就是我最初在鱼中的做法:

set -U LD_LIBRARY_PATH /usr/local/cuda/lib64
echo $LD_LIBRARY_PATH
/usr/local/cuda/lib64

当我在 bash 中尝试完全相同的事情时,它工作正常

bash
export LD_LIBRARY_PATH=/usr/local/cuda/lib64
./darknet 
usage: ./darknet <function>

所有这些都在运行 fish 2.2.0 和 bash 4.3.48 的 64 位 Ubuntu 16.04.6 上。

标签: shellubuntufish

解决方案


您没有导出变量。相反,请执行以下操作:

set -Ux LD_LIBRARY_PATH /usr/local/cuda/lib64
./darknet 

推荐阅读