了解LD_LIBRARY_PATH和缺少共享库(对于Mujoco)
我最近安装了免费试用版的Mujoco 1.31。 (虽然这个问题比这个更普遍; Mujoco是一个商业物理库,其中一个需要获得计算机特定的mjkey.txt
文件来运行它。)我一直在观察$LD_LIBRARY_PATH
的一些行为,这令我感到困惑。了解LD_LIBRARY_PATH和缺少共享库(对于Mujoco)
这里是相关的东西的目录。我在/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
这个工程,我很乐意继续这样做,但我真的很想理解为什么我的第一次尝试失败。从*看,我看到我得到的错误可能与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
,这是由其他一些*问题建议的。不幸的是,当我在顶层目录mjpro131
时,我仍然无法运行Mujoco模拟器。
问题:我认为LD_LIBRARY_PATH
应该能够找到/home/daniel/mjpro131/bin
和它里面的任何库。但是,这似乎并不是这样,因为它找不到libmujoco131.so
。我在这里错过了很明显的东西吗
我使用的是Ubuntu 16.04。
您可能不会处理LD_LIBRARY_PATH
行为,而是您正在测试的库的一个特征。
下面是从您提供的链接页面报价:
的代码示例预期激活密钥将被命名mjkey.txt,并在同一目录中的可执行文件,但可以也被改变。
如果您没有采取任何措施来改变该默认行为,您所看到的行为似乎与指定的策略非常一致。
是的,我想这是有道理的。我正在使用的代码(依靠Mujoco)似乎工作正常,所以我想这不需要担心。 – ComputerScientist