二进制重用:静态库
编译器将一些编译单元编译成一组目标文件(.o文件),这些目标文件用于了项目1,如何将这些目标文件用于其他项目呢?
目标文件方式
将这些目标文件拷贝到新的项目,并且将这些目标文件的头文件也拷贝过去。新项目中使用此头文件进行编译,生成的目标文件和拷贝过来的目标文件通过链接器链接为可执行程序。
静态库方式
更好的方式是将目标文件打包成单个二进制文件,即静态库。只需要为其他项目提供单独一个二进制文件和头文件,而不是提供一组分离目标文件的集合。
- 链接器能够解析静态库文件格式,并提取出其中的目标文件。
- 创建的静态库并不是不可逆的,可以通过多种工具将静态库解包为原始目标文件集合。
- 如果要看一个静态库的两个版本之间的差异,可以通过工具将静态库解压,然后逐个比较目标文件,可以看到两个库版本改动了那些目标文件。