欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c++中的编译链接介绍

程序员文章站 2022-04-18 13:13:46
1、编译:cpp--->obj 把源文件中的文本形式存在的源代码翻译成机器语言形式的目标文件的过程,在这个过程中,编译器会进行一系列语法检查。 (1)编译单元:每一个CP...

1、编译:cpp--->obj

把源文件中的文本形式存在的源代码翻译成机器语言形式的目标文件的过程,在这个过程中,编译器会进行一系列语法检查。

(1)编译单元:每一个CPP文件就是一个编译单元。且每个单元之间是相互独立并且互相不可知。

(2)目标文件:由编译所生成的文件,以机器码的形式包含了编译单元里所有的代码和数据,还有一些其他信息,如未解决符号表、导出符号表和地址重定向表等。

(3)存在形式:二进制

在预编译时,.h头文件会被复制、扩展到包含它的.cpp文件里,然后编译器编译该cpp文件作为一个obj文件,该cpp文件作为一个编译单元独立编译。当编译器将一个工程里所有的cpp文件以分离的方式编译完毕后,再由链接器进行链接成为一个可执行文件。

2、链接

在链接器进行链接的时候,

(1)首先决定各个目标文件在最终可执行文件里的位置。

(2)然后访问所有目标文件的地址重定义表,对记录中的地址进行重定位。

(3)遍历所有目标文件的未解决符号表,并且在导出符号表里查找匹配的 符号,并在未解决符号表中所记录的位置上填写实现地址。

(4)最后把所有的目标文件的内容写在各自的位置上。

(5)作一些其他工作,生成可执行文件。