Linux ar命令(更改静态库相关属性信息)

库:为减少编程时程序代码的开发量,一般会按照软件重用思想将经常使用的功能模块封装成库,而对库文件进行操作一般会使用Linux中的ar命令。

ar命令基本用法:

ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。原始文件的内容、模式、时间戳、属主、组等属性都保留在库文件中。

 例如我们可以用ar rv liba.a a.o b.o来
生成一个库,库名为a,链接时可以用-ltest链接。该库中存放了两个模块a.o和b.o。选项前的‘-'字符可有可无。ar命令选项可分为操作选项和任选项,现把{dmpqrtx}部分称为操作选项,而[abcDfilMNoPsSTuvV]部分称为任选项。
补充说明:ar可集合许多文件,成为单一的备存文件;在备存文件中,所有成员文件皆保有原来的属性与权限。

命令:
  d - 从存档中删除文件
  m[ab] - 移动档案中的文件
  p - 在存档中找到的打印文件
  q[f] - 快速追加文件到存档
  r[ab][f][u] - 替换现有文件或将新文件插入存档
  s - 充当ranlib
  t - 显示档案的内容
  x[o] - 从存档中提取文件
 命令特定修饰符:
  [a] - 将文件放在 [member-name] 之后
  [b] - 将文件放在 [member-name] 之前(与 [i] 相同)
  [D] - 对时间戳和 uids/gids 使用零(默认)
  [U] - 使用实际时间戳和 uids/gids
  [N] - 使用名称的实例 [count]
  [f] - 截断插入的文件名
  [P] - 匹配时使用完整路径名
  [o] - 保留原始日期
  [u] - 仅替换比当前存档内容更新的文件
 通用修饰符:
  [c] - 如果必须创建库,则不发出警告
  [s] - 创建存档索引(参见 ranlib)
  [S] - 不建立符号表
  [T] - 制作精简档案
  [v] - 冗长
  [V] - 显示版本号
  @<file> - 从 <file> 读取选项
  --target=BFDNAME - 指定目标对象格式为 BFDNAME
 可选的:
  --plugin <p> - 加载指定插件
仿真选项:
  没有仿真特定选项

ar用来管理一种文档,这种文档中可以包含多个其他任意类别的文件。这些被包含的文件称为这个文档的成员。ar可以向这种文档中添加、删除、解出成员。成员的原有属性(权限、属主、日期等)不会丢失。

在实际编程开发中,只有开发的目标连接库是这种格式的,尽管并未明确说明,基本可以认定ar是用来操作目标链接库(.a文件)的。

1、创建库文件

通常使用“ar cru liba.a a.o"命令来创建一个库并把a.o添加进去。"c"关键字告诉ar需要创建一个新库文件,如果没有指定这个标志则ar会创建一个文件,同时会给出 一个提示信息;"u"用来通知ar如果a.o比库中的同名成员要新,则用新的a.o替换原来的。但是我发现这个参数也是可有可无的,可能是不同版本的ar 行为不一样吧。实际上用"ar -r liba.a a.o"在freebsd5上面始终可以成功。

2、添加新成员

"ar -r liba.a b.o" ;即可将b.o加入到liba.a中。默认的加入方式为append,即加在库的末尾。"r"关键字可以有三个修饰符"a", "b"和"i"。

  • "a":表示after,即将新成员加在指定成员之后。例如"ar -ra a.c liba.a b.c"表示将b.c加入liba.a并放在已有成员a.c之后;
  • "b":表示before,即将新成员加在指定成员之前。例如"ar -rb a.c liba.a b.c";
  • "i":表示insert,跟"b"作用相同。

3、列出库中已有成员

"ar -t liba.a" ;加"v"选项则会并列出成员的日期等属性。

4、删除库中成员

"ar -d liba.a a.c" ;表示从库中删除a.c成员。如果库中没有这个成员ar也不会给出提示。如果需要列出被删除的成员或者成员不存在的信息,就加上"v"修饰符。

5、调整库中成员

"ar -x liba.a b.c" ;

6、调整库中成员的顺序

使用"m"选项,该选项与"r"选项一样,也有3个修饰符"a","b", "i";如果要将 b.c 移动到a.c之前,则:"ar -mb a.c liba.a b.c" ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值