在Mac OS X上,我得到了 "impicit entrystart for main executable" -- 使用: gfortran -o linker

问题描述 投票:0回答:1

我的代码是用Fortran 77写的,我使用的是最新的gfortran包,大约在2020年2月中旬安装了brew。代码相当广泛。看来编译器对代码的处理是可以的。

gfortran -c main.for
gfortran - Sub1.for

etc;都能正常工作,并创建了对象文件main.o,Sub1.o等,但是,在链接时,:

gfortran -o main.o Sub1.o Sub2.o ---- MyLib.a

(期待一个自动命名的可执行文件)我得到的却是错误的退出信息。

Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64

我在这里犯了什么大罪?

linker fortran gfortran
1个回答
1
投票

这个草拟的命令。

gfortran -o main.o Sub1.o Sub2.o ---- MyLib.a

请求 gfortran 连接对象文件 Sub1.o, Sub2.o 与图书馆 ...MyLib.a并输出一个名为 main.o.

main.o 是(大概)之前编译的对象文件,其中包含了程序的入口点,但你在这里输出了程序。因此,链接失败。相反,使用:

gfortran -o prog main.o Sub1.o Sub2.o ---- MyLib.a

如果你想链接一个叫 prog. 或者如果像你说的那样

期待一个自动命名的可执行文件

然后改用:

gfortran main.o Sub1.o Sub2.o ---- MyLib.a

和自动命名的可执行文件 a.out

© www.soinside.com 2019 - 2024. All rights reserved.