在OSX 10.11上使用f77进行编译问题

时间:2016-05-15 23:37:21

标签: linker fortran clang fortran77 binutils

我一直试图运行这个模型,几十年前被其他人写的。我已经构建了库,但是当我尝试实际运行该程序时,我收到以下错误:

f77   -o mimics1.5  ../source/*.o  trunk_hght_f.f 
    trunk_hght_f.f:
       trunk_hght_func:
    Undefined symbols for architecture x86_64:
      "MAIN__", referenced from:
         -u command line option
         (maybe you meant: _MAIN__)
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

我在MacOSX 10.11上,which f77/usr/local/bin/f77f77 -v回复:

Cynthias-MacBook-Pro-2:input_dir cynthiag$ f77 -v    
/usr/local/bin/f77 script based on f2c:
    f2c (Fortran to C Translator) version 20100827.

f77应该/usr/bin/吗?

ld似乎是问题,所以我按照HERE的指示尝试解决它,但看起来我的XCode是最新的,我的库是构建和链接的(如据我所知,我甚至重新安装binutils以确保ld在正确的位置,但没有成功。 which ld给出:/usr/bin/ldld -v给出:

Cynthias-MacBook-Pro-2:input_dir cynthiag$ ld -v
@(#)PROGRAM:ld  PROJECT:ld64-264.3.102
configured to support archs: armv6 armv7 armv7s arm64 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em (tvOS)
LTO support using: LLVM version 7.3.0

我是fortran的新手,所以在设置f77时我可能搞砸了,但是我已经坚持了几天这个问题了,所以任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:0)

最后,对我来说似乎只是使用gfortran代替f77。这包括小心地将所有提及切换到模型中的f77(即在所有Makefile中)并用gfortran替换它们。

然后必须彻底安装库,因为显然在f77中编译的库与gfortran不兼容。

最后,该模型调用了一些没有./的可执行文件,导致模型失败。

不幸的是,我不能解释为什么f77会失败,但是gfortran设置比f77 / f2c容易得多并且工作得很好,所以它可能是要走的路。