libgfortran:版本`GFORTRAN_1.4'未找到

时间:2012-03-09 02:47:43

标签: matlab blas

当我在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。

5 个答案:

答案 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)
csdp: /opt/matlab/sys/os/glnxa64/libgfortran.so.3: version
GFORTRAN_1.4'(/usr/lib64/atlas/libf77blas.so.3要求)

答案 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)(我们刚刚复制的那个)。

问题立刻消失了。我希望这对你也有帮助!