libgfortran: 找不到版本为“GFORTRAN_1.4”的库文件

12

当我尝试在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)

有什么解决这个问题的想法吗?

更新: 我发现 "strings MATLAB/.../libgfortran.so.3 | grep GFORTRAN" 输出 GFORTRAN_1.0。我尝试更改了MATLAB内部的libgfortran,但没有起作用。现在我认为最好找到一个适用于GFORTRAN_1.0的合适的libblas。

5个回答

13

请查看此链接,它介绍了如何在某些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"

此链接(http://judsonsnotes.com/notes/index.php?option=com_content&view=article&id=659:installing-matlab-in-ubuntu-1110&catid=37:tech-notes&Itemid=59)出现502错误。很好,你在这里重复了必要的步骤。 在我的情况下,在我的系统(Fedora 30)上没有libgfortran.so.3,只有libgfortran.so.1libgfortran.so.5。但我想这应该写成一个新问题。 - winkmal

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是我遇到类似问题的另一个库。


请注意,如果您没有编辑$MATLABDIR/bin的权限,这可能是您唯一的选择。对我来说似乎有效。 - pattivacek

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命令找到了这个库文件的位置:) 感谢您的帮助:)


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'未找到(由/usr/lib64/atlas/libptf77blas.so.3所需)
csdp:/opt/matlab/sys/os/glnxa64/libgfortran.so.3:版本
GFORTRAN_1.4'未找到(由/usr/lib64/atlas/libf77blas.so.3所需)


0

我遇到了同样的问题(错误usr/lib64/libgfortran.so.3:找不到版本“gfortran_1.4”),实际上修复起来并不难。问题似乎是libgfortran.so.3的gfortran_1.4版本来自发布的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)。

问题立即消失了。希望这也能帮助到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接