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。

4

5 回答 5

13

阅读这个链接,它解释了如何在一些 linux 系统上配置 matlab。

这里是与您相关的步骤:

要启用运行外部程序,[…] fortran 库需要正确更新和链接。查看此命令的输出:

ll "$MATLABDIR/bin/glnxa64/"

[此链接] 可能存在:

libgfortran.so.3 -> libgfortran.so.3.0.0

在您的机器上搜索 [this library]:

locate libgfortran.so

[...] 更新 Matlab 的链接以指向这些较新的版本:

sudo ln -sf [location of libgfortran.so.3.0.0] "$MATLABDIR/bin/glnxa64/libgfortran.so.3"
于 2012-05-30T13:24:38.763 回答
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 是另一个我遇到类似问题的库。

于 2013-09-01T02:21:30.160 回答
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 命令找到了这个库的位置:)感谢您的帮助:)

于 2013-08-02T06:10:39.190 回答
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: version GFORTRAN_1.4' not found (required by /usr/lib64/atlas/libf77blas.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

于 2013-01-15T09:59:19.337 回答
0

我刚刚遇到了同样的问题(错误 usr/lib64/libgfortran.so.3: version `gfortran_1.4' not found),实际上并不难修复。问题似乎是 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/.库/)

我复制了这个版本的 libgfortran.so.3,然后转到我的程序期望找到 libgfortran.so.3 的目录。我用新的(我们刚刚复制的)替换了旧的(旧的 libgfortran.so.3)。

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

于 2016-06-06T18:52:47.120 回答