【问题标题】:ccx - calculix: why occurs an error when I want to execute ccx?ccx - calculix:为什么我想执行 ccx 时会出错?
【发布时间】:2018-06-12 21:58:13
【问题描述】:

我已安装 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。

【问题讨论】:

  • 您不能将 64 位库链接到 32 位库位置并期望 32 位库正确使用它。您需要安装 32 位版本的库。
  • 您的意思是我必须将 i386-linux-gnu 目录中的 libgfortran.so.3.0.0 与 libgfortran.so.2 参考链接?
  • 您不需要在任何地方手动链接任何东西。这样做(在系统目录中)基本上是总是错误的。您需要安装工具运行所需的库的正确架构的正确版本。 Ubuntu 应该有一个 32 位版本可以与我期望的 64 位版本一起安装。

标签: linux fortran ubuntu-14.04 gfortran abaqus


【解决方案1】:

如果您的应用程序是 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 安装软件包。

【讨论】:

  • 那是我已经做过的,但忘了说,我已经安装了 libfortran3 i386,但是仍然发生错误:/ 正如我提到的 ccx 需要 libfortran2 而不是 3
  • @mistgabel 那么你需要找到一个提供 libgfortran2 的包,这意味着一组 gcc 4.2 时代的包。搜索一些并尝试安装。
  • 好的...谢谢。稍后我会试试这个,现在我不在家。明天我要写结果。
  • 是的,我可以试试这个并从源代码安装 right 库,这样我就对 makefile 中的路径进行了一些更改。现在它起作用了。我的错误是从二进制安装它,这意味着预配置在我的系统上不起作用。
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 2020-02-09
  • 1970-01-01
  • 2021-12-23
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 2021-09-22
相关资源
最近更新 更多