0

我已经安装了 ccx(Calculix 求解程序)来解决物理问题。预处理器 cgx 工作正常,但是当我在终端中使用 .inp 文件(abaqus)运行 ccx 时,出现错误:

ccx: symbol lookup error: ccx: undefined symbol: _gfortran_internal_malloc

当我只运行没有标志或 .inp 文件的 ccx 时,结果是:

Usage: CalculiX.exe -i jobname

我在我的 ubuntu 14.04 计算机(64 位:x86_64)上安装了 libgfortran3,并将“/usr/lib/x86_64/”中的“libgfortran.so.3.0.0”文件与创建的参考对象文件“libgfortran.so.2”链接"(calculix 需要该文件,因为应用程序在 32 位上运行)。没有那个参考文件 ccx 不能完全工作,这就是我必须链接它的原因。我使用Calculix 2.8p2。

4

1 回答 1

0

如果您的应用程序是 32 位的,则它需要 32 位库才能工作。您所做的是安装 64 位库,然后将它们符号链接到 32 位库应该在的位置。这满足了该库“存在”但对于 32 位程序将无法使用。

我的图书馆位置将与您的不同,但请注意它们是不同的:

  • 64 位 libgfortran.so

    $ file /usr/lib64/gcc/x86_64-pc-linux-gnu/5.2.0/libgfortran.so.3.0.0 
    /usr/lib64/gcc/x86_64-pc-linux-gnu/5.2.0/libgfortran.so.3.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped
    
  • 32 位 libgfortran.so

    $ file /usr/lib64/gcc/x86_64-pc-linux-gnu/5.2.0/32/libgfortran.so.3.0.0 
    /usr/lib64/gcc/x86_64-pc-linux-gnu/5.2.0/32/libgfortran.so.3.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
    

其次,如果您的程序需要libgfortran.so.2,则libfortran.so.3在其位置符号链接一个版本将不起作用。库版本号的更改是一个很好的信号,表明它们不兼容且不可互换。您将需要找到一个为 i386 架构提供旧库的包。这可能意味着从旧版本的 ubuntu 安装软件包。

于 2015-10-21T19:46:30.557 回答