簡體   English   中英

在Ubuntu上從Matlab調用外部腳本失敗

[英]Call external script from matlab failed on Ubuntu

我搜索了很多次,但沒有解決問題。 我使用system()/ unix()從matlab調用了一個外部R腳本,發現共享庫被錯誤加載。 我知道在Matlab中環境是錯誤的。 我也嘗試將命令包裝在xterm或gnome-terminal中,但沒有成功。 如何加載正確的env變量? 有沒有辦法在調用之前重設回操作系統的env變量?

>> !export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/ 
   % also tried - !export LD_LIBRARY_PATH=/usr/lib64;
>> unix('Rscript /home/gary/testRF1.R')
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/usr/lib/R/library/stats/libs/stats.so':
  /usr/local/MATLAB/R2012a/sys/os/glnxa64/libgfortran.so.3: version `GFORTRAN_1.4' not found (required by /usr/lib/liblapack.so.3gf)
During startup - Warning message:
package ‘stats’ in options("defaultPackages") was not found 
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/usr/lib/R/library/stats/libs/stats.so':
  /usr/local/MATLAB/R2012a/sys/os/glnxa64/libgfortran.so.3: version `GFORTRAN_1.4' not found (required by /usr/lib/liblapack.so.3gf)
Error: package or namespace load failed for ‘R.matlab’
Execution halted

ans =

     1

發行:Ubuntu 12.04.3

R信息:平台x86_64-pc-linux-gnu
拱x86_64
操作系統linux-gnu
系統x86_64,linux-gnu
狀態
專業3
小0.2
年2013
第09個月
第25天
svn版本63987
語言R
version.string R版本3.0.2(2013-09-25)昵稱Frisbee Sailing

非常感謝,加里

一種解決方案是更改要使用的libgfortran。

  1. 打開一個終端,然后轉到“ local_MATLAB” / sys / os /“ your_os” /

  2. 檢查libgfortran.so.3是否是指向ligfortran.so.3.0.0的符號鏈接並將其刪除

  3. 否則,請復制libgfortran.so.3以進行備份,以防萬一發生問題

  4. 找到您自己的libgfortran並使符號鏈接指向它

在我的系統上,它看起來像:

cd /usr/local/MATLAB/R2012a/sys/os/glnxa64/
rm libgfortran.so.3
ln -s -T /usr/lib/x86_64-linux-gnu/libgfortran.so.3.0.0 libgfortran.so.3

如果您使用的是UNIX,則應已安裝libgfortran,可以使用以下命令找到它:

locate libgfortran

請記住重新啟動MATLAB,以便應用更改

我假設您可以從終端成功運行Rscript。 如果真是這樣,那么解決您的問題是,您要在matlab中使用setenv而不是!export。 您可能想看一下這個問題: 從Matlab啟動應用程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM