文章目录
- 1.编译过程
- 1.1直接编译
- 1.2预处理
- 1.3编译
- 1.4链接
- 2.函数库
- 2.1什么是函数库
- 2.2动静态库的差别
1.编译过程
我们可以直接用gcc对文件完成编译,也可以进行分步编译,分步编译的过程为预处理,编译,汇编,链接;
1.1直接编译
1.2预处理
预处理的功能:宏定义替换,文件包含,条件编译,去注释等
gcc是如何找到对应的库的呢?
在安装gcc编译器的时候,同时会进行一些库的安装,编译器自身有能力去查找所需要的库;
1.3编译
gcc检查代码的规范性,是否有语法错误等,以及确定代码的实际要做的工作,检查无误后,gcc将代码翻译成汇编语言,生成.o文件,相当于windows中的obj文件
1.4链接
将汇编之后生成的.o文件进行链接,生成可执行程序
为什么需要链接?
因为我们的程序之中调用了函数接口,因此需要链接函数库;
2.函数库
2.1什么是函数库
由上述可知,我们在预处理阶段只是将头文件“stdio.h”进行了包含,并且头文件中只有printf函数的声明,并没有实现,那么是在哪里实现函数的呢?
系统将这些函数的实现都放到了名为libc.so.6的库文件中去了,在没有特别指定的时候,gcc会到系统默认的搜索路径/usr/lib下进行查找,也就是链接到libc.so.6库函数中去,这样就实现了函数,这也是链接的作用;
共有条评论 网友评论