GCC编译相关

gcc的编译过程

1.预处理:解释源程序当中的所有的预处理指令,将文件包含语句所指定的文件拷贝进来(#include <xxx.h>)覆盖掉原来的#include语句,所有的宏定义被展开(因此宏展开是不占用运行时间的),所有的条件编译语句将被执行,删除注释,添加必要的调试信息
        获取C源程序经过预处理之后的文件,方法: gcc xx.c -o xx.i -E

2.编译:将预处理生成的.i文件编译为对应硬件平台的汇编语言(使用GCC,将生成x86格式的汇编文件)
        获取C源程序经过预处理和编译之后的汇编程序,方法如下:
gcc xx.i -o xx.s -S

3.汇编:编译器gcc将会调用汇编器as将汇编源程序翻译成为可重定位文件
        获取相应文件方法如下:gcc xx.s -o xx.o -c

4.链接:经过汇编之后的可重定位文件不能直接运行,链接是链接系统的标准C库、gcc内置库等基本库文件。因为Linux下任何一个程序编译都需要用到这些基本库的全局符号,因此以下命令-lc和-lgcc是默认的,可以省略:gcc xx.c -o xx -lc -lgcc
注:可以链接多个可重定位文件


GCC编译常用选项:
参数功能
-o 指定输出文件名
-E输出预处理后的代码文件
-S输出编译后的汇编代码文件
-c输出链接后的可重定位文件
-g在编译结果中加入调试信息
-I指定头文件路径
-L指定库文件路径
-static使用静态链接
-Wall打开所有的警告
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值