1

我有一个需要在 64 位 ubuntu 服务器上运行的 32 位 Fortran 应用程序。我已经在 32 位 ubuntu 机器上验证了该应用程序,它运行良好;但是,当我在 64 位服务器上运行时出现以下错误:

error while loading shared libraries: libgfortran.so.3: cannot open shared object file: No such file or directory

对此进行了一些研究,我没有高兴地尝试了以下方法:

  • sudo apt-get install libgfortran3:i386找不到包裹
  • 手动安装 libgfortran 的 32 位 .deb 包(因架构不正确而失败)
  • 安装 getlibs 并让它确定依赖项是什么
  • 运行在...下ldconfig -v找到libgfortran.so.3 -> libgfortran.so.3.0.0/usr/lib/x86_64-linux-gnu:
  • ...然后尝试将路径更改为该路径LD_LIBRARY_PATH,但什么也没做(尽管我不得不说,一旦我们开始谈论库路径,我的知识就会变得非常少...)
  • 检查是否安装了 ia32-libs,它们是
  • 删除并重新安装 libgfortran,然后dpkg --configure --pending运行dpkg --path-include=/usr/lib/x86_64-linux-gnu​​.

如果可能的话,我想远离创建一个 32 位的 chroot,但在这一点上,如果还有其他事情可以让我不必这样做,我不知道......

你们中有人知道我还能做些什么吗?谢谢你。

4

2 回答 2

1

尝试安装包lib32gfortran3,因为这将安装 32 位版本的 libgfortran 库。在启动程序之前,您可能最终需要设置LD_LIBRARY_PATH="/usr/lib32:",但如果没有这个,它也可能会运行。

于 2013-02-08T15:41:06.483 回答
0

我不确定这是我的疏忽还是其他原因;但这是解决所有问题的两个步骤:

  1. sudo apt-get install gfortran在将安装 GNU Fortran 编译器的 64 位机器上运行
  2. 在 64 位机器上使用 gfortran 重新编译应用程序。

奇怪的是,此时我仍然无法将应用程序文件复制/粘贴到其他 64 位机器并运行它。相反,我首先必须在每台机器上单独安装 gfortran,即使我不打算编译任何东西。一旦安装了 gfortran,应用程序就会运行,无论它是在哪里编译的......我认为 libgfortran3 一定是某种依赖......

于 2013-02-08T16:29:51.067 回答