了解 LD_LIBRARY_PATH 和缺少的共享库(对于 Mujoco)

Understanding LD_LIBRARY_PATH and missing shared libraries (for Mujoco)

我最近安装了 Mujoco 1.31 的免费试用版。 (不过,这个问题比这个问题更笼统;Mujoco 是一个商业物理库,需要在其中获取特定于计算机的 mjkey.txt 文件来 运行 它。)我一直在观察 $LD_LIBRARY_PATH 这让我很困惑。

这是相关资料​​的目录。我在目录 /home/daniel/mjpro131 中。 mjkey.txt 文本出现在两个地方,因为我必须在 bin 目录中复制一份 运行 代码。

$ ls
bin  doc  include  LICENSE.txt  mjkey.txt  model  sample
$ ls -lh bin/
total 2.1M
-rwxrwxr-x 1 daniel daniel  14K Apr 23  2016 compile
-rwxr-xr-x 1 daniel daniel 123K Apr 23  2016 libglfw.so.3
-rwxrwxr-x 1 daniel daniel 1.8M Apr 23  2016 libmujoco131.so
-rw-rw-r-- 1 daniel daniel  876 Apr  3 14:52 mjkey.txt
-rw-rw-r-- 1 daniel daniel  156 Apr  3 14:52 MUJOCO_LOG.TXT
-rwxrwxr-x 1 daniel daniel  30K Apr 23  2016 simulate
-rwxrwxr-x 1 daniel daniel  51K Apr 23  2016 test
$ ls -lh model/
total 12K
-rwxr-xr-x 1 daniel daniel 9.4K Apr 23  2016 humanoid.xml

getting started instructions 说试试模拟器代码。 (这些说明适用于 1.40 版,但仍适用于 1.31 版。)我尝试 运行 以下命令,但它不起作用:

$ ./bin/simulate model/humanoid.xml 
./bin/simulate: error while loading shared libraries: ../bin/libmujoco131.so: cannot open shared object file: No such file or directory

然而,当我进入 目录 bin 时,模拟器代码有效:

$ cd bin/
$ ./simulate ../model/humanoid.xml 
MuJoCo Pro library version 1.31

这行得通,我很乐意继续这样做,但我真的很想了解为什么我的第一次尝试失败了。通过查看 Whosebug,我发现我得到的错误可能与 LD_LIBRARY_PATH 变量有关。在这里:

$ echo $LD_LIBRARY_PATH 
/usr/local/cuda-8.0/lib64:/home/daniel/mjpro131/bin:/home/daniel/mjpro131
$ pwd
/home/daniel/mjpro131
$ ls
bin  doc  include  LICENSE.txt  mjkey.txt  model  sample

这是我的.bashrc的相关行:

export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/daniel/mjpro131/bin:/home/daniel/mjpro131

在尝试 运行 模拟器代码之前,我确保获取它的源代码。此外,在尝试 运行 模拟器之前,我 运行 sudo ldconfig 这是其他一些 Whosebug 问题所建议的。不幸的是,当我在 mjpro131.

的顶级目录时,我仍然无法 运行 Mujoco 模拟器

问题:我认为 LD_LIBRARY_PATH 应该能够找到 /home/daniel/mjpro131/bin 和其中的任何库。但是,情况似乎并非如此,因为它找不到 libmujoco131.so。我在这里遗漏了什么明显的东西吗?

我正在使用 Ubuntu 16.04.

您处理的可能不是 LD_LIBRARY_PATH 行为,而是您正在测试的库的特征。

这是您提供 link 的页面的引述:

The code samples expect the activation key to be named mjkey.txt and to be in the same directory as the executable, but this can also be changed.

如果您没有采取任何措施来更改该默认行为,那么您看到的行为似乎与上述政策非常一致。