C++的编译-链接模型

cpp文件---预处理---编译---汇编---链接

一、预处理:

  • 将cpp源文件生成为翻译单元
  • 防止头文件被循环展开
  • 解决方案:
  1. #ifdef解决方案
  2. #pragma once解决方案
gcc -E ./main.cpp -o ./main.i

二、编译:将翻译单元.i文件生成为汇编代码(g++和gcc的区别:gcc一般用于处理C文件)

g++ -S ./main.i -o ./main-s

三、汇编:把汇编代码生成机器码或目标文件

四、链接:把多个目标文件集成在一起,关联声明与定义。链接种类有:内部链接、外部链接、无链接

直接进行编译和链接:

g++ ./main.cpp -o ./main

 五、整体步骤

mkdir demo_0    # 在当前目录下创建文件夹demo_0
gidit main.cpp    # 生成main.cpp文件并打开编辑
gcc -E ./main.cpp -o ./main-i    # gcc将源文件main.cpp生成翻译单元.i文件
gcc -S ./main.i -o ./main.s    # gcc将翻译单元.i文件生成汇编代码.s文件

# g++将源文件生成可执行文件
g++ ./main.cpp -o main
# 执行
./main

六、Others

C++中有两种文件:源文件.cpp和头文件.h。

C++支持“分别编译”,一个程序中的代码可以放在不同的cpp文件中,然后对他们单独编译,编译成.o目标文件后做一次链接操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值