2017-04-03 122 views
0

我最近安裝了免費試用版的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。

回答

0

您可能不會處理LD_LIBRARY_PATH行爲,而是您正在測試的庫的一個特徵。

下面是從您提供的鏈接頁面報價:

的代碼示例預期激活密鑰將被命名mjkey.txt,並在同一目錄中的可執行文件,但可以也被改變。

如果您沒有采取任何措施來改變該默認行爲,您所看到的行爲似乎與指定的策略非常一致。

+0

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