当我在MATLAB中尝试运行mex文件时出现以下错误:
??? Invalid MEX-file
'findimps3.mexa64':
/MATLAB/bin/glnxa64/../../sys/os/glnxa64/libgfortran.so.3: version `GFORTRAN_1.4' not found (required by /usr/lib/libblas.so.3gf)
任何想法如何解决这个问题?
更新: 我发现“字符串MATLAB /.../ libgfortran.so.3 | grep GFORTRAN”输出GFORTRAN_1.0。我试图在MATLAB中更改libgfortran,但它没有用。我认为最好找到适合GFORTRAN_1.0的libblas。
答案 0 :(得分:12)
阅读this link,它解释了如何在某些Linux系统上配置matlab。
这里是与您相关的步骤:
要启用运行外部程序,需要正确更新和链接fortran库。查看此命令的输出:
ll "$MATLABDIR/bin/glnxa64/"
[此链接]可能存在:
libgfortran.so.3 -> libgfortran.so.3.0.0
在您的计算机上搜索[此库]:
locate libgfortran.so
[...]更新Matlab指向这些较新版本的链接:
sudo ln -sf [location of libgfortran.so.3.0.0] "$MATLABDIR/bin/glnxa64/libgfortran.so.3"
答案 1 :(得分:3)
我(我想)通过使用LD_PRELOAD运行matlab解决了这个问题,就像这个
一样 LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libfreetype.so:/usr/lib/x86_64-linux-gnu/libgfortran.so.3 matlab
注意freetype是另一个我遇到类似问题的库。
答案 2 :(得分:2)
在我的情况下,以下命令有效:
sudo ln -sf /usr/lib/gcc/i686-linux-gnu/4.7/libgfortran.so /usr/local/MATLAB/R2012a/sys/os/glnx86/libgfortran.so.3
Matlab抱怨它无法在以下位置找到GFORTRAN1.4:
/usr/lib/gcc/i686-linux-gnu/4.7/libgfortran.so
所以我将这个位置链接到我的库:
/usr/local/MATLAB/R2012a/sys/os/glnx86/libgfortran.so.3
我通过使用上面给出的locate命令找到了这个库的位置:)感谢您的帮助:)
答案 3 :(得分:0)
在我的情况下,由 $ ln -sf /usr/lib64/libgfortran.so.3.0.0 /opt/matlab/sys/os/glnxa64/libgfortran.so.3
使用CDSP时遇到的错误:
csdp:/opt/matlab/sys/os/glnxa64/libgfortran.so.3:找不到版本GFORTRAN_1.4' not found (required by /usr/lib64/atlas/libptf77blas.so.3)
GFORTRAN_1.4'(/usr/lib64/atlas/libf77blas.so.3要求)
csdp: /opt/matlab/sys/os/glnxa64/libgfortran.so.3: version
答案 4 :(得分:0)
我遇到了同样的问题(错误usr / lib64 / libgfortran.so.3:版本`gfortran_1.4'未找到),实际上并不难解决。问题似乎是gfortran_1.4版本的libgfortran.so.3来自发行版gcc-4.6.2(即fortran 4.6)。
我所做的是下载gcc-4.6.2并使用以下步骤构建:tar -xvf gcc-4.6.2.tar.gz cd gcc-4.6.2 ./contrib/download_prerequisites cd .. mkdir objdir cd objdir $ PWD /../ gcc-4.6.2 / configure --prefix = $ HOME / gcc-4.6.2 --enable-languages = c,fortran,c ++,go make make install
然后,一旦完成所有内容,我就会进入新的libgfortran.so.3所在的目录(在我看来是/ home / testuser / objdir / x86_64-unknown-linux-gnu / 32 / libgfortran /的.libs /)
我复制了这个版本的libgfortran.so.3,然后转到我的程序期望找到libgfortran.so.3的目录。我用旧的(旧的libgfortran.so.3)替换了旧的(旧的libgfortran.so.3)(我们刚刚复制的那个)。
问题立刻消失了。我希望这对你也有帮助!