ccx - calculix: 为什么我想执行 ccx 时出错?

ccx - calculix: why occurs an error when I want to execute ccx?

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

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

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

Usage: CalculiX.exe -i jobname

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

如果您的应用程序是 32 位的,则需要 32 位的库才能运行。您所做的是安装 64 位库,然后将它们符号链接到 32 位库应该所在的位置。这满足库 "exists" 但它不能用于 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 的旧版本安装一个包。