我的代码是用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
我在这里犯了什么大罪?
这个草拟的命令。
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