gpt4 book ai didi

c - C工程编译的时候怎么最后没有创建main.o?

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:54 24 4
gpt4 key购买 nike

我看过 GNU make 在我的电脑上的安装过程注意力。这是一个相对简单的编译:它连续创建来自每个 .c 文件的 .o 文件,然后通过链接创建一个可执行文件所有 .o 文件,按照它们创建的顺序:

gcc  -g -O2 -rdynamic  -o make ar.o arscan.o commands.o default.o dir.o expand.o 
file.o function.o getopt.o getopt1.o guile.o implicit.o job.o load.o loadapi.o
main.o misc.o output.o read.o remake.o rule.o signame.o strcache.o variable.o
version.o vpath.o hash.o remote-stub.o glob/libglob.a

我没有得到的是以下内容:main.o 怎么能没有出现在这个列表的最后?因为使用可执行文件some arguments 等同于调用 function main inmain.c 在这些论点上,所以在 main.o 之后创建的任何东西似乎没用。

最佳答案

在 gcc 命令行中指定目标文件的顺序是无关紧要的。所有这些都链接到一个可执行文件中,并且该可执行文件知道 main 函数所在的位置。

当读入所有目标文件时,链接器确保 main 函数与直接或间接从 main 调用的任何函数一起存在。

仅仅因为目标文件名为 main.o 并不一定意味着 main 函数存在于该文件中。

关于c - C工程编译的时候怎么最后没有创建main.o?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38484664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com