了解 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.
如果您没有采取任何措施来更改该默认行为,那么您看到的行为似乎与上述政策非常一致。
我最近安装了 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
.
问题:我认为 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.
如果您没有采取任何措施来更改该默认行为,那么您看到的行为似乎与上述政策非常一致。