linux ar 命令详解

一、作用

对静态库进行操作。

二、静态库本质是什么

都知道静态库是一些功能代码的集合,连接阶段和主程序连接,可以将静态库中的代码融合到主程序中。

那么静态库到底是什么呢?实际上,静态库就是一堆 .o 文件的集合,准确说法如下:

静态库是通过编译器编译源代码文件并将生成的目标文件打包生成后的归档文件。

说白了静态库就是一个被打包工具打完的包,里面放的就是 .o 文件。

这个打包工具就是 ar,全称:archiver

三、栗子

test.h

#include <stdio.h>

void print();

test.c

#include "test.h"

void print()
{
        printf("hello world!\n");
}

main.c

#include "test.h"

int main()
{
        print();
        return 0;
}

gcc -c test.c
ar rcs libtest.a test.o
gcc -o main main.c -L. -ltest

./main

hello world!

这里我们成功使用了 ar 工具制作了一个静态库:libtest.a 。

四、命令解析

1、参数 r :在库中插入模块(替换)。

当插入的模块名已经在库中存在,则替换同名的模块。如果若干模块中有一个模块在库中不存在,ar 显示一个错误消息,并不替换其他同名模块。默认的情况下,新的成员增加在库的结尾处,可以使用其他任选项来改变增加的位置。 

2、参数 c :创建一个库。

不管库是否存在,都将创建。 

3、参数 s :创建目标文件索引,这在创建较大的库时能加快时间。

(补充:如果不需要创建索引,可改成大写 S 参数;如果 .a 文件缺少索引,可以使用 ranlib 命令添加)

4、参数 t :ar t libxxx.a  

显示库文件中有哪些目标文件,只显示名称。  

5、参数 v :ar tv libxxx.a  

显示库文件中有哪些目标文件,显示文件名、时间、大小等详细信息。  

6、格式:nm -s libxxx.a  

显示库文件中的索引表。  

7、格式:ranlib libxxx.a  

为库文件创建索引表。 

(SAW:Game Over!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值