了解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,并在同一目录中的可执行文件,但可以也被改变。

如果您没有采取任何措施来改变该默认行为,您所看到的行为似乎与指定的策略非常一致。

+0

是的,我想这是有道理的。我正在使用的代码(依靠Mujoco)似乎工作正常,所以我想这不需要担心。 – ComputerScientist