linux ar 命令的使用说明:
用途说明
创建静态库.a文件。《关于Linux静态库和动态库的分析》。
格式:ar rcs libxxx.a xx1.o xx2.o
Linux ar命令参数:
指令参数
-d 删除静态库中的成员文件。
-m 变更成员文件在静态库中的次序。
-p 显示静态库中的成员文件内容。
-q 将文件附加在静态库的末端。
-r 将文件插入静态库中。
-t 显示静态库中所包含的文件。
-x 静态库中取出成员文件。
选项参数
a<成员文件> 将文件插入静态库中指定的成员文件之后。
b<成员文件> 将文件插入静态库中指定的成员文件之前。
c 创建一个静态库,不管库是否存在,都将创建。
f 为避免过长的文件名不兼容于其他系统的ar指令指令,因此可利用此参数,截掉要放入静态库中过长的成员文件名称。
i<成员文件> 将文件插入静态库中指定的成员文件之前。
o 保留备静态库中文件的日期。
s 若静态库中包含了对象模式,可利用此参数建立备存文件的符号表。
S 不产生符号表。
u 只将日期较新文件插入静态库文件中。
v 程序执行时显示详细的信息。
V 显示版本信息。
使用示例:
格式:ar t libxxx.a
显示库文件中有哪些目标文件,只显示名称。
格式:ar tv libxxx.a
显示库文件中有哪些目标文件,显示文件名、时间、大小等详细信息。
格式:nm -s libxxx.a
显示库文件中的索引表。
格式:ranlib libxxx.a
为库文件创建索引表。
创建并使用静态库:
1:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。
2:将test.c编译成目标文件。
gcc -c test.c
如果test.c无误,就会得到test.o这个目标文件。
3:由.o文件创建静态库。
ar rcs libtest.a test.o
4:在程序中使用静态库。
gcc -o main main.c -L. -ltest
因为是静态编译,生成的执行文件可以独立于.a文件运行。
5:执行。
./main
创建并使用动态库
1:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。
2:将test.c编译成目标文件。
gcc -c test.c
前面两步与创建静态库一致。
3:由.o文件创建动态库文件。
gcc -shared -fPIC -o libtest.so test.o
4:在程序中使用动态库。
gcc -o main main.c -L. -ltest
当静态库和动态库同名时,gcc命令将优先使用动态库。
5:执行。
LD_LIBRARY_PATH=. ./main
用途说明
创建静态库.a文件。《关于Linux静态库和动态库的分析》。
格式:ar rcs libxxx.a xx1.o xx2.o
Linux ar命令参数:
指令参数
-d 删除静态库中的成员文件。
-m 变更成员文件在静态库中的次序。
-p 显示静态库中的成员文件内容。
-q 将文件附加在静态库的末端。
-r 将文件插入静态库中。
-t 显示静态库中所包含的文件。
-x 静态库中取出成员文件。
选项参数
a<成员文件> 将文件插入静态库中指定的成员文件之后。
b<成员文件> 将文件插入静态库中指定的成员文件之前。
c 创建一个静态库,不管库是否存在,都将创建。
f 为避免过长的文件名不兼容于其他系统的ar指令指令,因此可利用此参数,截掉要放入静态库中过长的成员文件名称。
i<成员文件> 将文件插入静态库中指定的成员文件之前。
o 保留备静态库中文件的日期。
s 若静态库中包含了对象模式,可利用此参数建立备存文件的符号表。
S 不产生符号表。
u 只将日期较新文件插入静态库文件中。
v 程序执行时显示详细的信息。
V 显示版本信息。
使用示例:
格式:ar t libxxx.a
显示库文件中有哪些目标文件,只显示名称。
格式:ar tv libxxx.a
显示库文件中有哪些目标文件,显示文件名、时间、大小等详细信息。
格式:nm -s libxxx.a
显示库文件中的索引表。
格式:ranlib libxxx.a
为库文件创建索引表。
创建并使用静态库:
1:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。
2:将test.c编译成目标文件。
gcc -c test.c
如果test.c无误,就会得到test.o这个目标文件。
3:由.o文件创建静态库。
ar rcs libtest.a test.o
4:在程序中使用静态库。
gcc -o main main.c -L. -ltest
因为是静态编译,生成的执行文件可以独立于.a文件运行。
5:执行。
./main
创建并使用动态库
1:编辑源文件,test.h test.c main.c。其中main.c文件中包含main函数,作为程序入口;test.c中包含main函数中需要用到的函数。
2:将test.c编译成目标文件。
gcc -c test.c
前面两步与创建静态库一致。
3:由.o文件创建动态库文件。
gcc -shared -fPIC -o libtest.so test.o
4:在程序中使用动态库。
gcc -o main main.c -L. -ltest
当静态库和动态库同名时,gcc命令将优先使用动态库。
5:执行。
LD_LIBRARY_PATH=. ./main