g++: 编译过程

为了能更好的说明意思, 下面的源文件使用define_main.cpp为例…

g++ define_main.cpp该过程包含了

  • 编译: 是把文本形式源代码翻译为机器语言形式的目标文件的过程。(源代码 --> 目标文件(.o))
  • 链接: 是把目标文件、操作系统的启动代码和用到的库文件进行组织,形成最终生成可执行代码的过程。(目标文件 --> 可执行文件(.exe))

在这里插入图片描述

  • 1~3是属于编译过程
  • 4是属于链接过程

1. 预处理(无关代码的清除):

头文件的引用, 宏的替换, 注释的消除
生成一个.i文件(输出预处理后的文件,linux下以.i为后缀名)
g++ -E define_main.cpp > define_main.i

2. 将预处理后的文件转换成汇编语言, 生成.s文件

g++ -S define_main.cpp > define_main.s

3. 由汇编文件转换为目标代码, 生成.o文件

g++ -c define_main.cpp > define_main.o

除非你是做编译器和连接器调试开发的,否则打开这种.o没有任何意义。二进制机器码一般人也读不了…

4. 连接目标代码,生成可执行程序

g++ define_main.o -L 库文件

功能:将.o文件与所需的库文件链接整合形成.exe文件,这就是可执行文件。-L 表示链接,这里我后面写的是绝对路径,相对各人电脑不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值