Linux下gcc使用方法(多文件编译)

GCC编译器处理C语言源文件时,通常经历预处理、编译、汇编和连接四个阶段。预处理处理#include、#define等指令,生成.i文件;编译阶段将.i文件转为汇编语言的.s文件;汇编阶段则将.s文件转化为机器码的.o文件;最后连接阶段将.o文件组合成可执行程序。当多文件编译时,如果在链接阶段出错,说明预处理、编译和汇编阶段无误。
摘要由CSDN通过智能技术生成

对于GUN编译器来说,程序的编译要经历预处理、编译、汇编、连接四个阶段 从功能上分,预处理、编译、汇编是三个不同的阶段,但GCC的实际操作上,它可以把这三个步骤合并为一个步骤来执行。下面我们以C语言为例来谈一下不同阶段的输入和输出情况。

1.预处理阶段,输入的是C语言的源文件,通常为*.c。它们通常带有.h之类头文件的包含文件。这个阶段主要处理源文件中的#ifdef、 #include和#define命令。该阶段会生成一个中间文件*.i,但实际工作中通常不用专门生成这种文件,因为基本上用不到;若非要生成这种文件不可,可以利用下面的示例命令:

gcc -E stu.c -o stu.i

2.编译阶段,输入的是中间文件*.i,编译后生成汇编语言文件*.s 。这个阶段对应的GCC命令如下所示:

gcc -S stu.i -o stu.s

3.汇编阶段,将输入的汇编文件*.s转换成机器语言*.o。这个阶段对应的GCC命令如下所示:

gcc -c stu.s -o stu.o

4.连接阶段将输入的机器代码文件*.o(与其它的机器代码文件和库文件)汇集成一个可执行的二进制代码文件。这一步骤,可以利用下面的示例命令完成:

gcc stu.o -o stu

对于多文件编译,在第四步链接时出现错误,所以说明前三步预处理,编译,汇编都没有问题,所以可以将前三步合三为一GCC命令如下

gcc -c stu.c -o stu.o

然后对第四步进行单独处理

.c 文件生成.o,.o 文件统一连接成可执行文件stu

单独编译,统一连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟小刘392

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值