在Ubuntu上从matlab调用外部脚本失败

时间:2014-01-08 18:03:08

标签: linux r matlab 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
os linux-gnu
system x86_64,linux-gnu
状态
专业3 小0.2 2013年 月09日 第25天 svn rev 63987
语言R
version.string R版本3.0.2(2013-09-25) 昵称飞盘航行

非常感谢, 加里

2 个答案:

答案 0 :(得分:2)

一种解决方案是更改要使用的libgfortran。

  1. 打开终端并cd到“local_MATLAB”/ sys / os /“your_os”/

  2. 检查libgfortran.so.3是否是指向ligfortran.so.3.0.0的符号链接并将其删除

  3. 否则请复制libgfortran.so.3以备不时出现问题

  4. 找到你自己的libgfortran并使符号链接指向它

  5. 在我的系统上,这看起来像是:

    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以应用更改

答案 1 :(得分:0)

我假设您可以成功地从终端运行Rscript。如果是这样的话,那么 解决方案你的问题是你想在matlab中使用setenv而不是!export。您可能想看看这个问题:Start application from Matlab