Linux下创建、查看、提取和修改静态库(*.a)

先说明一点,静态库文件是由多个目标文件打包而成的,在windows下静态库文件的后缀是.lib,而在linux下静态库文件的后缀是.a(a是archive的缩写,也就是文档文件)。

  废话少说,下面直接进入主题。

  1.创建两个c文件:addition.c 和 multiplication.c

addition.c

复制代码
1 //addition.c
2 int addition (int a ,int b)
3 {
4 int result;
5 result=a+b;
6 return result;
7 }
复制代码

multiplication.c

复制代码
1 //multiplication.c
2 int multiplication
3 {
4 int result;
5 result=a*b;
6 return result;
7 }
复制代码

 

  2.编译C文件得到.o目标文件

1 $ gcc -c addition.c
2 $ gcc -c multiplication.c

其中选项 -c 是让gcc只把源码编译成.o文件。

接着在当前文件夹中就会发现多处了两个.o文件

1 $ ls
2 addition.c multiplication.c addition.o multiplication.o

 

  3. 用ar命令来创建静态库文件

1 $ ar cr libarith.a  addition.o multiplication.o

其中cr就是create的意思,这样就创建了一个libarith.a的静态库文件。

 

  4.写一个c程序来调用libarith.a库

在使用库文件之前要先建立一个头文件 header.h,它包含了库文件中实现了函数的声明。

1 //header.h
2 #include<stdio.h>
3 int addition(int a,int b);
4 int multiplication(int a,int b);

然后创建一个c程序example.c来调用函数

复制代码
 1 // example.c
 2 #include "header.h"
 3 int main()
 4 {
 5 int result;
 6 result=addition(1,2);
 7 printf("addition result is :%d\n",result);
 8 result=multiplition(3,4);
 9 printf("multiplication result is:%d\n",result);
10 return 0;
11 }
复制代码

编译example.c

1 $ gcc example.c libarith.a -o example

选项 -o 后面的参数是指定编译器生成的可执行文件名,如果没有加 -o的话默认生成的可执行文件名是 a.out

运行可以行文件example

1 $./example
2 addtion result is:3
3 multiplication result is:12

 

  5.查看库文件中的目标文件

1 $ ar t libarith.a
2 addition.o
3 multiplition.o

如果想查看库文件中包含了哪些函数可以用 nm  libarith.a 查看,如果要查看可执行文件需要调用哪些库可以用 lld example 来查看。

 

  6.从库文件中提取目标文件

复制代码
1 $ mkdir file
2 $ cp libarith.a file/
3 $ cd file
4 $ ar x libarith.a
5 $ ls
6 addition.o
7 multiplition.o
复制代码

 

  7.添加一个目标文件到库文件中

假设你已经有一个目标文件subtraction.o

1 $ ar r libarith.a subtraction.o
2 $ ar t libarith.a
3 addition.o
4 multiplication.o
5 subtraction.o

如果库文件中已经存在了subtraction.o文件,则会用新的来覆盖原来旧的。

 

  8.删除库文件中指定的目标文件

1 $ ar d libarith.a addition.o
2 $ ar t libarith.a
3 multiplication.o
4 subtraction.o
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值