描述
ar命令是Linux的一个备份压缩命令linux命令,可以创建、修改备存文件(archive),或从备存文件中抽取成员文件。备存文件以一定的结构打包一个至多个其它文件(即成员文件),且成员文件的内容、模式、时间戳等信息将被保存在备存文件中。
常见的应用是,使用ar命令将多个目标文件(*.o)打包为静态链接库文件(*.a)。[1]
语法命令格式
ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...
ar -M [<mri-script>]
参数
·指令参数
-d 删除备存文件中的成员文件。
-m 变更成员文件在备存文件中的次序。
-p 显示备存文件中的成员文件内容。
-q 将成员文件添加到备存文件末端。
-r 将文件插入备存文件中。
-s 等价于运行ranlib。
i<成员文件> 将文件插入备存文件中指定的成员文件之前。
o 保留备存文件中文件的日期。
s 若备存文件中包含了对象模式,可利用此参数建立备存文件的符号表。
S 不产生符号表。
u 只将日期较新文件插入备存文件中。
v 程序执行时显示详细的信息。
V 显示版本信息。[2]
生成静态链接库
静态库是目标文件的一个集合,通常静态库以“.a”为后缀。静态库由程序ar生成,如今静态库已经不像之前那么普遍了,这主要是由于现在的程序一般都使用动态库。
生成静态链接库
工具ar的选项-r,可以创建库,并把目标文件插入到指定库中。目标文件一般为C语言源文件(*.c)编译后的文件(*.o)。
一般格式:$ar -r LibName.a ObjFile.o [ObjFile2.o] [ObjFile3.o] [...]
例如,将string.o打包为库文件libstr.a的命令为:
$ar -rcs libstr.a string.o
使用静态链接库
其根本原因也是找不到test()函数的实现文件,由于该test()函数的实现在test.a这个静态库中的,故在链接的时候需要在其后加入test.a这个库,链接命令修改为如下形式即可。动态链接库英文为dll,是dynamic link library 的缩写形式,dll是一个包含可由多个程序同时使用的代码和数据的库,dll不是可执行文件.动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数.函数的可执行代码位于一个 dll 中,该 dll 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数.dll 还有助于共享数据和资源.多个应用程序可同时访问内存中单个dll 副本的内容.dll 是一个包含可由多个程序同时使用的代码和数据的库.。mingw 是gnu工具,可以生成exe程序和dll链接库等windows 32位程序linux命令,是编译工具集。