C++编译链接

来源:互联网 发布:中核原子能公司 知乎 编辑:程序博客网 时间:2024/05/01 15:36
编译:compile,先针对单独原文件进行处理。
每个cpp文件(文本形式存在的源代码)作为一个编译单元,被独立编译成一个目标文件(obj,机器语言形式),它用目标语言来描述.cpp的内容。
不同CPP文件的函数可以通过声明的方式使用,通常声明放在H文件里。


链接:link,把compile处理的结果组合成一个完整的可执行文件。
接器将所有的目标文件obj链接起来,形成一个.exe可执行文件。

过程:

一、预编译(预处理)
处理#define #if #include这类#开头的语句,这些称为预编译指令。
这个过程中会把.h文件和.c/.cpp文件组合成最终交给compile过程的原文件。
这个原文件是不包含任何#开头的语句的。所有#define定义的宏也会被替换。


二、编译
把上面那个原文件编译成.o或者VC里是.obj文件。
这个文件保存了机器码化的函数、函数的描述、全局变量的描述、乃至段的描述等等。


三、链接
把可执行程序需要的所有的编译过程产生的.o或者.obj文件组合到一起。
(这里也包括.lib文件,.lib文件件本质上就是打包的.obj文件集合)。
另外连接过程还会组合一些其他数据,比如资源、可执行文件头等等。
可见链接库那篇文章。




0 0
原创粉丝点击