我刚开始参与海湾合作委员会。
假设我们有一个由vim labaled helloworld.c编写的文本文件
为什么SWIM(不是我的人)用
编译它 与 gcc -c helloworld.c 相比, gcc helloworld.c 然后 gcc -o helloWorld helloworld.o ?答案 0 :(得分:1)
编译过程中有一些阶段:
预处理 - >编译 - >装配 - >联。
固定相:
使用gcc [options]
时:
如果您使用:
gcc -E
在预处理阶段停止并为您提供预处理代码。gcc -S
在编译阶段停止并为您提供汇编程序代码。gcc -c
在汇编阶段后停止并为您提供一个对象模块。 gcc -o
为您提供包含名称的可执行文件,默认情况下会为您提供a.out
答案 1 :(得分:1)
对于一个文件,没有用处。 但是如果你编译一个更大的项目,你可能不想重新编译所有文件,如果你只改变一个文件。因此,获得编译时间。
使用中间.o
文件,您只需重新编译需要重新编译的文件,并将最终二进制文件与所有这些对象文件链接起来。
另一个用例是,如果您想使用自定义链接脚本,例如选择部分或代码的位置。然后,您需要从.o
个文件中获取实际代码。