我多次搜索,但没有解决问题。我使用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)
昵称飞盘航行
答案 0 :(得分:2)
一种解决方案是更改要使用的libgfortran。
打开终端并cd到“local_MATLAB”/ sys / os /“your_os”/
检查libgfortran.so.3是否是指向ligfortran.so.3.0.0的符号链接并将其删除
否则请复制libgfortran.so.3以备不时出现问题
找到你自己的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以应用更改
答案 1 :(得分:0)
我假设您可以成功地从终端运行Rscript。如果是这样的话,那么 解决方案你的问题是你想在matlab中使用setenv而不是!export。您可能想看看这个问题:Start application from Matlab