1 编译链接过程分为 预处理--->编译---->汇编---->链接。如下图所示

c++中编译链接总结

2 预处理都做了什么

(1)将所有的#define删除并展开所有的宏

(2)处理所有的条件预编译指令比如#if #ifdef

(3)处理#Incldue预编译指令,将包含的文件插入到预编译的文件中。采用头文件的目的是可以供多个不同的cpp源程序使用。自己定义的通常用“”,如果包含库文件的一般是“<>”.

(4)过滤所有的注释符号

(5)添加行号和文件标识。方便再编译器产生调试用的行号信息等

(6)保留所有的#pragma编译器指令。

3 编译

(1)将预处理完成的文件进行一系列的词法分析,语法分析等产生汇编代码文件。

g++ -S hello.i -o hello.s可以通过打开helloword.s查看汇编代码。

4 链接

(1)将链接的模块独立地编译然后组装起来,这就是链接啦

(2)最基本的静态链接过程如下图所示

c++中编译链接总结

(3)库也就是一组目标文件的包,将代码编译成目标文件以后打包存放。

(4)静态链接

对函数库的链接放在编译时期完成的是静态链接。目标文件和相关的函数库被合成一个可执行文件。通常为libxxx.a

例子:

代码如下

 1 //main.cpp
 2 
 3 #include "add.h"
 4 #include "sub.h"
 5 #include "iostream"
 6 using namespace std;
 7 //演示静态链接
 8 int main(){
 9     cout<<"1+2="<<add(1,2)<<endl;
10     cout<<"1-2="<<sub(1,2)<<endl;
11     return 0;
12 }
View Code

相关文章:

  • 2021-11-06
  • 2021-05-07
  • 2021-05-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-27
  • 2021-10-09
猜你喜欢
  • 2021-07-05
  • 2021-09-13
  • 2021-05-12
  • 2021-12-04
  • 2021-04-09
相关资源
相似解决方案