我最近安裝了免費試用版的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
這個工程,我很樂意繼續這樣做,但我真的很想理解爲什麼我的第一次嘗試失敗。從StackOverflow看,我看到我得到的錯誤可能與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
,這是由其他一些StackOverflow問題建議的。不幸的是,當我在頂層目錄mjpro131
時,我仍然無法運行Mujoco模擬器。
問題:我認爲LD_LIBRARY_PATH
應該能夠找到/home/daniel/mjpro131/bin
和它裏面的任何庫。但是,這似乎並不是這樣,因爲它找不到libmujoco131.so
。我在這裏錯過了很明顯的東西嗎
我使用的是Ubuntu 16.04。
是的,我想這是有道理的。我正在使用的代碼(依靠Mujoco)似乎工作正常,所以我想這不需要擔心。 – ComputerScientist