ar命令的常见用法
1. 创建一个库,请输入:
ar -qv lib.a strlen.o strcpy.o
- 如果 lib.a 库不存在,则此命令创建它,并将文件 strlen.o 和 strcpy.o 的副本输入其中。
- 如果lib.a 库存在,则此命令在不检查相同成员的情况下,将新的成员添加到末尾。
- v 标志设置详细方式
2. 显示库的目录,请输入:
ar -tv lib.a
- 列出 lib.a 库的目录,显示类似于 ls -l 命令的输出的长列表。
- 要只列出成员文件名称,则省略 -v 标志。
3. 替换或添加新成员到库中,请输入:
ar -rv lib.a strlen.o strcat.o
- 替换成员 strlen.o 和 strcat.o。
如果 lib.a 如示例 1 中显示的那样创建,则替换strlen.o 成员。因为不存在名为 strcat.o 的成员,所以它被添加到库的末尾。
4. 指定在何处插入新成员,请输入:
ar -rbv strlen.o lib.a strcmp.o
- 添加 strcmp.o 文件,并将该新成员置于 strlen.o 成员之前。
5. 更新一个已经更改过的成员,请输入:
ar -ruv lib.a strcpy.o
- 替换现有 strcpy.o 成员,但仅当文件 strcpy.o 自从最后一次添加到库后已经修改时才替换它。
6. 更改库成员的顺序,请输入:
ar -v -m -a strcmp.o lib.a strcat.o strcpy.o
- 将成员 strcat.o 和 strcpy.o 移动到紧跟在 strcmp.o 成员之后的位置。保留 strcat.o和 strcpy.o 成员的相对顺序。
换句话说,如果在移动之前 strcpy.o 成员在 strcat.o 成员之前,那么(移动后)它依旧如此。
7. 解压缩库成员,请输入:
ar -xv lib.a strcat.o strcpy.o
- 将成员 strcat.o 和 strcpy.o 分别复制到名为 strcat.o 和 strcpy.o 的文件。
8. 解压缩并重命名一个成员,请输入:
ar -p lib.a strcpy.o > stringcopy.o
- 将成员 strcpy.o 复制到一个名为 stringcopy.o 的文件。
9. 删除一个成员,请输入:
ar -v -d lib.a strlen.o
- 从 lib.a 库中删除成员 strlen.o。
10. 从多个用 ld 命令创建的共享模块中创建一个压缩文档库,请输入:
ar -r -v libshr.a shrsub.o shrsub2.o shrsub3.o ...
- 从名为 shrsub.o、shrsub2.o、shrsub3.o 等等的共享模块中创建名为 libshr.a 的压缩文档库。
要编译并链接使用 libshr.a 压缩文档库的 main 程序,请使用以下命令:
cc -o main main.c -L/u/sharedlib -lshr
main 程序现在是可执行的。main 程序引用的任何符号(包含在libshr.a 压缩文档库中)已经因延迟分辨率而作了标记。-l 标志指定应在 libshr.a 库中搜索这些符号。
11. 列出 lib.a 的内容(忽略任何 32 位目标文件),请输入:
ar -X64 -tv lib.a
12. 从 lib.a 解压缩所有 32 位的目标文件,请输入:
ar -X32 -x lib.a
13. 列出 lib.a 中的所有文件,无论是 32 位、64 位或非对象,请输入:
ar -X32_64 -t -v lib.a