C++多线程项目 - 了解C++预处理汇编编译链接的流程

了解C++预处理汇编编译链接的流程

开始

先写一段代码

#include<stdio.h>
#define nihao 521
int main(){
    printf("%d", nihao);
    return 0;
}

这段代码很简单,最后输出的是521,但是程序执行的基本步骤是啥?
借图

预处理

看看预处理后的文件吧
g++ test.c -E -o test.i
-E是预处理参数,
-o是生成目标文件
大概就是头文件的引入、宏的展开等
test.i
如图,nihao已经被替换

编译

g++ test.c -S -o test.s
如下图,进行一些代码优化,然后生成汇编程序
在这里插入图片描述
可以编译预处理后的文件,也可以之间编译源文件,编译器会自动帮我先预处理。

汇编

g++ test.s -c -o test.o
将汇编指令翻译成二进制形式
.o文件
正常是无法查看的

链接

这一步简单理解就是把调用库文件合并到程序当中,如我们调用了printf函数,它就会把printf相关的库链接到代码当中
如果你有动态库、静态库的经验,应该就很好理解了,推荐这篇文章 ^ - ^
g++ test.o -o a.out
生成可运行文件,可以是多个.o文件

详细的流程见牛客视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值