【问题标题】:libgfortran: version `GFORTRAN_1.4' not foundlibgfortran:未找到版本“GFORTRAN_1.4”
【发布时间】:2012-03-09 02:47:43
【问题描述】:

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

【问题讨论】:

    标签: matlab blas


    【解决方案1】:

    阅读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"
    

    【讨论】:

    • this link 给出错误 502。很好,您在这里重复了必要的步骤。就我而言,libgfortran.so.3 不存在于我的系统(Fedora 30)上,只有libgfortran.so.1 和libgfortran.so.5。但我想这应该进入一个新问题。
    【解决方案2】:

    我(我想我)通过使用 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,这可能是您唯一的选择。似乎对我有用。
    【解决方案3】:

    在我的例子中,以下命令有效:

    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
    

    我通过上面给出的定位命令找到了这个库的位置:)感谢您的帮助:)

    【讨论】:

      【解决方案4】:

      在我的情况下,由
      修复 $ 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 需要)

      【讨论】:

        【解决方案5】:

        我刚刚遇到了同样的问题(错误 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/.libs/)

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-10-01
          • 2017-08-21
          • 1970-01-01
          • 2017-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多