在 Linux 上,如何让“不兼容”的 i386 f77 库与当前的 Fortran 编译器(例如 gfortran)一起使用?

在 Linux 上,如何让“不兼容”的 i386 f77 库与当前的 Fortran 编译器(例如 gfortran)一起使用?

我想运行 elf32-i386 库libkernlib.a在我最新的 Ubuntu Linux 机器上使用 Fortran 77 程序。据我所知,gfortran它向后兼容 Fortran 77,但我在让它与库一起工作时遇到了麻烦。我尝试过 -ff2c、-fbackflash 等,但一切仍然给我

$ gfortran -ff2c -O -o output f77fortran.f -lkernlib

/usr/bin/ld: skipping incompatible //usr/local/lib/libkernlib.a when searching for -lkernlib
/usr/bin/ld: canot find -lkernlib

我也尝试过使用fort77.我找不到f77有效的。如果有人知道如何运行 f77 程序及其库,无论是使用gfortran还是其他东西,那就太好了。

顺便说一句,libkernlib.a 库有来自“库”链接的旧版本这一页,但我尝试过的都给出了相同的错误,并且都是 i386 (我通过 发现了这一点objdump -f libkernlib.a)。

上下文:这是 Mathematica 的一部分项目使用旧代码。

答案1

实际上-m32比我的效果更好,我根本-ff2c不需要使用。-ff2c

$ gfortran -m32 -O -o output f77fortran.f -lkernlib 

然后我遇到了一些与 32 位或 f77 兼容性有关的其他错误,这些错误通过添加软件包得到了解决:

  • lib32gfortran-4.8-dev
  • gcc-multilib

相关内容