[关闭]
@songying 2019-02-15T16:45:29.000000Z 字数 837 阅读 1171

源代码编译与链接

c++


源代码编译成目标文件分为四个步骤: 预处理,编译,汇编,链接

gcc 与 g++

1. 预处理

预处理的第一步是将源代码文件.cpp 与相关头文件预处理为 .i 文件。

  1. g++ -E helloworld.cpp -o helloworld.i

在预处理过程中主要是处理以# 开始的预编译指令。

当无法判断宏定义是否正确或头文件包含是否正确时,可以查看预处理后的文件来确定问题。

2. 编译

高级语言 -- 汇编语言

编译过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析以及优化后产生相应的汇编代码文件。

  1. g++ -s helloworld .i -o helloworld.s

编译过程分为6步: 扫描(词法分析), 语法分析,语义分析,源代码优化,代码生成和目标代码优化。

3. 链接

链接是将编译后得到的各个模块组装起来,其主要内容是将各个模块之间相互引用的部分处理好,使得各个模块能够正确的链接。

1. 静态链接

2. 动态链接

目标文件的类型:ELF

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注