什么是 archive file ,与 object file 的区别

cmake 文档中重复出现这两个词,一直不理解,含义大致是这个,

若以后在遇到这两个单词的其他含义再做补充,,

object file 是由source源文件编译之后生成的东西,一般以.o  .ojb 结尾

若生成 object file 的源文件 是无需链接其他文件的,那么,其实这个.o文件也是可以执行的

但是大多数情况下,object file 的源文件 是需要链接其他文件的,因此,源文件 编译后 生成的内容无法直接执行

现在,我们假设一个场景:有三个源文件:11.c   22.c   33.c 他们之间互相引用

经过编译后,会生成 三个 object file : 11.o   22.o   33.o

只有将这三个 object file 经过链接器链接起来后,才能生成可执行文件

archive file 是指:将这三个object file 文件 合成一个文件,之所以要将三个文件合成一个文件是因为这样更方便拷贝和分发给他人使用(因为此时的 archive file 文件依旧不是一个可执行的目标文件,想要生成一个可执行文件需要将这些object file 和 object file 中涉及的标准库中的头文件也连接起来,才能生成可执行文件。但是相较于链接3个object file,还是链接1个整合的 archive file 更加方便,命令可以写得短一些)

因此,当我们提供3个source file 的时候,可以通过命令参数 生成3个object file 或 1个可执行文件 或 1个archive file 。

你可能感兴趣的:(编译,链接,cmake)