1 函数库
- 库本质上是一种经过编译的可执行二进制代码,可以被操作系统载入内存执行。
- Linux 和 Windows 等不同平台编译环境不同, 函数库不兼容。
1.1 静态库 Static Library
- 静态是指每个用到该库的应用程序都拥有一份自己的库拷贝
- 静态库在程序编译时会被连接到目标代码中,可执行程序的体积较大, 程序运行时将不再需要该静态库, 可以删除库文件
- 静态库生成: 使用 ar (archive)命令将 .o 文件转换成 .a 静态库文件
- 静态库命名规则: 静态库的名字一般为 libxxxx.a, 其中 xxxx 是该库的名称, 后缀名是 .a
1.1.1 静态库查找
- 静态库文件一般放在
/lib
,/usr/lib
和/usr/local/lib
下, ld 默认能够找到, 无需其他操作 - 将静态库文件路径添加到
/etc/ld.so.cache
文件中, 执行 ldconfig 命令添加指定目录, 重建/etc/ld.so.cache
文件, 使该函数库被系统共享
1.1.2 静态库的生成
使用 ar 命令创建静态库
options | explanation |
---|---|
r | 替换已存在的或添加新文件到库中 |
s | 作为 ranlib |
c | 如果库必须被创建,不要发出告警 |