编译链接实战(31)再论静态库的本质是啥
文章目录
- 1. 静态库的物理构成
- 2. 静态库的链接行为
- 3. 静态库的本质特点
- 4. 静态库的底层示例
- **(1) 创建静态库**
- **(2) 查看静态库内容**
- **(3) 链接时的行为**
- 5. 静态库的优缺点
- **优点**
- **缺点**
- **6. 静态库 vs 动态库的本质区别**
- **7. 静态库的典型应用场景**
- **总结**

静态库(Static Library)的本质是预编译的目标文件(.o
文件)的归档集合,通过静态链接在编译时直接嵌入到最终的可执行文件中。它的核心特点和底层原理如下:
1. 静态库的物理构成
-
目标文件的集合:
静态库本质上是一组已经编译但未链接的**目标文件(.o
文件)**的打包(通常使用ar
工具归档生成)。- 例如,一个数学库
libmath.a
可能包含add.o
、sub.o
、mul.o
等目标文件。 - 通过
ar -t libmath.a
可以查看库中包含的目标文件列表。
- 例如,一个数学库
-
符号表(Symbol Table):
每个目标文件包含自己的符号表(函数名、全局变量等