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
posted @ 2022-05-12 22:31  时间的风景  阅读(672)  评论(0编辑  收藏  举报