linux 静态库 ar命令用法

摘要:
库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件。下面是ar命令的格式:ar[-]{dmpqrtx}[abcfilNoPsSuvV][membername][count]archivefiles...例如我们可以用arrvlibtest.ahello.ohello1.o来生成一个库,库名字是test,链接时可以用-ltest链接。

当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量。这里介绍命令ar,用来对库操作。 1.ar基本用法
ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。原始文件的内容、模式、时间戳、属主、组等属性都保留在库文件中。
下面是ar命令的格式:
ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files...
例如我们可以用ar rv libtest.a hello.o hello1.o
生成一个库,库名字是test,链接时可以用-ltest链接。该库中存放了两个模块hello.o和hello1.o。选项前可以有‘-'字符,也可以
没有。下面我们来看看命令的操作选项和任选项。现在我们把{dmpqrtx}部分称为操作选项,而[abcfilNoPsSuvV]部分称为任选项。
补充说明:ar可让您集合许多文件,成为单一的备存文件。在备存文件中,所有成员文件皆保有原来的属性与权限。
参  数: 指令参数 -d  删除库文件中的成员文件。 -m  变更成员文件在库文件中的次序。 -p  显示库文件中的成员文件内容。 -q  将问家附加在库文件末端。 -r  将文件插入库文件中。 -t  显示库文件中所包含的文件。 -x  自库文件中取出成员文件。 选项参数 a<成员文件>  将文件插入库文件中指定的成员文件之后。 b<成员文件>  将文件插入库文件中指定的成员文件之前。 c  建立库文件。 f  为避免过长的文件名不兼容于其他系统的ar指令指令,因此可利用此参数,截掉要放入库文件中过长的成员文件名称。 i<成员文件>  将问家插入库文件中指定的成员文件之前。 o  保留库文件中文件的日期。 s  若库文件中包含了对象模式,可利用此参数建立备存文件的符号表。 S  不产生符号表。 u  只将日期较新文件插入库文件中。 v  程序执行时显示详细的信息。 V  显示版本信息。

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

实际上通常只有在开发中的目标连接库是这种格式的,所以尽管不是,我们基本可以认为ar是用来操作这种目标链接库(.a文件)的。

ar的常用用法见正文。

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"

//生成静态库文件

ar–rctest.atest.o

免责声明:文章转载自《linux 静态库 ar命令用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇(转)Oracle存储过程xxl-job 增加python3下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux下的压缩和解压缩命令gzip/gunzip

作者:邓聪聪 Linux下的压缩和解压缩命令——gzip/gunzip yum -y install zip gzip (--安装压缩工具) gzip命令 gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。 gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又...

Linux学习之路--shell学习

shell基础知识 什么是Shell Shell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入信息,shell将用户程序及其输入翻译成操作系统内核(kernel)能够识别的指令,并且操作系统内核执行完将返回的输出通过shell再呈现给用户,下图所示用户、shell和操作系统的关系: Shell也...

每天一个Linux命令(ls)

前提 文件路径的描述方式 只有1个盘,叫根目录/ 绝对路径:从根目录开始描述的文件路径描述方式,如/a/b/c。以/打头的路径描写法一定是绝对路径 相对路径:以相对于当前路径的文件路径描述方式。 .表示当前目录 ..表示上级目录 当前路径:系统目前正处于的目录就是系统的当前路径,描写在提示符中。 提示符:[用户名@主机名 当前路径最后一个目录]休止符 休止...

关于win10系统如何调用debug查看CPU汇编指令和内存

  下载安装DOSBox.网上提供下载地址:DOSBOX     Debug是DOS(Disk Operating System,磁盘操作系统)、windows提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。     查看更详细的介绍DEBUG百度百科     一般我们常用到的De...

Aircrack-ng无线审计工具使用

Aircrack-ng工具   Aircrack-ng是一个与802.11标准的无线网络分析的安全软件,主要功能有网络探测、数据包嗅探捕获、WEP和WPA/WPA2-PSK破解。Aircrack可以工作在任何支撑监听模式的无线网卡上,并嗅探802.11a、802.11b、802.11g的数据包。   1.1、Aircrack-ng工具集   Aircrac...

adb

ADB(Android Debug Bridge) ANR(Application No Responding) adb其实就是Android Debug Bridge, Android 调试桥的缩写,adb 是一个C/S架构的命令行工具 这里介绍一些里面常用的命令: adb devices , 获取设备列表及设备状态 [xuxu:~]$ adb de...