静态库管理
静态库管理工具 ar 和 ranlib
参考:《UNIX 系统与 软件开发 》中国铁道出版设 邵国金主编 第十章 编程基础篇
一、静态库管理工具
1、ar
ar的功能是静态库文件的管理,可用于静态库的创建,模块添加,提取及删除等,其用法如下:
ar [-] p [mod [relpos] [ count ] ] archive [member ...]
其中:p 功能参数,mod 修饰参数,部分参数说明如下;
类型 |
参数 |
意义 |
d |
从库文件中删除模块 |
|
功能参数 |
m |
移动模块位置(与a,b和i 配合使用) |
p |
显示模块到内容到标准输出 |
|
q |
快速追加模块到文件到尾部(不检查是否又重复模块 |
|
功能参数 |
r |
在库文件中插入模块(插入过程替换重名模块) |
t |
列库文件中模块到列表 |
|
x |
从库文件中提取模块 |
|
a |
在指定模块后追加 |
|
b,i |
在指定模块前插入 |
|
修饰参数 |
c |
创建库文件 |
s |
为库文件建立或更新索引,ar -s libfile 和 ranlib libfile相同 |
|
S |
不创建符号表(若不创建,则在使用前必须使用ranlib 或ar -s 创建 |
|
v |
显示工作过程信息 |
2、ranlib
ranlib 用于为刚建立到静态库建立符号索引表,基本用法:
ranlib archive ...
若在使用ar维护静态库时没有使用-S选项,之后可不运行ranlib。
3、nm
nm 用于显示目标模块到符号或函数表,比如
nm file.o # 显示目标模块file2.o中的函数名
二、静态库管理实例
1、创建静态库
创建静态库,需要以下过程:(1)编写源代码文件;(2)由源代码文件生成.o目标文件;(3)用ar命令将若干目标文件生成静态库文件。
例如:用file1.c 和 file.c 生成libfile.a的过程如下:
$: gcc -c file1.c file2.c # 生成目标文件
$: ar -crv libfile.a file1.o file2.o # 够做静态库
$: ranlib libfile.a # 构建索引表(若创建库时未使用-S,可不做此步)
2、库的维护
$: ar -t libfile.a # 查看库中到模块
$:ar -x libfile.a file1.o # 提取file1.o模块(原件保留)
$:ar -d libfile.a file1.o # 从库libfile.a中删除file1.o模块
$:ar -r libfile.a file1.o # 向库libfile.a中添加file1.o模块
3、对非标准静态库的使用
对于非标准库,在使用时需要使用-l指定库名,-L指定库文件位置。