gcc编译C程序的主要过程是:预处理---编译---汇编---连接,其中:(以名为hello.c的源文件为例)
预处理:对各种预处理指令(#开头,如#include,#define)进行处理,以及删除注释和多余空白字符。生成被修改的源程序hello.i
E是通知gcc对hello.c进行预编译;o是对命令输出结果进行导入操作
gcc -E hello.c -o hello.i
编译:对代码进行语法语义分析和错误判断,生成汇编代码文件hello.s
S是通知gcc对目标文件hello.i进行编译
gcc -S hello.i -o hello.s
汇编:将汇编代码转化为计算机可识别的二进制文件,生成可重定位目标程序(二进制)hello.o
c是通知gcc对目标文件hello.s进行指令转换操作
gcc -c hello.s -o hello.o
链接:将多个.o文件合并成一个可执行文件hello
gcc hello.o -o hello
hello文件即最后可以直接运行的可执行文件,通过./hello执行,通过objdump -d hello可以将可执行文件转化为汇编语言
==========
或者可以直接通过执行gcc hello.c就可以直接生成二进制目标文件a.out,通过./a.out也可以执行结果
或者通过gcc hello.c -o hello,这样可以给生成的文件取名为hello
==========
如果是链接两个文件,可以参考:
https://blog.csdn.net/qq_31811537/article/details/79312908
https://www.linuxidc.com/Linux/2016-09/135473.htm
原文地址:https://www.cnblogs.com/lyeeer/p/10508924.html
时间: 2024-10-07 16:13:34