[李景山php] C语言如何使用静态库

通过简单计算器功能实现静态库演示:

静态库c文件: static_lib.c


int add(int a, int b){
return a + b;
}
int sub(int a, int b){
return a - b;
}
int mul(int a, int b){
return a * b;
}
int div(int a, int b){
return a / b;
}

静态库h头文件:static_lib.h


extern int add(int a, int b);
extern int sub(int a, int b);
extern int div(int a, int b);
extern int mul(int a, int b);

主要执行文件:main.c


include

include “static_lib.h”

int main(void){
int a, b;
printf(“please input a and b \n”);
scanf(“%d%d”,&a,&b);
printf(“the add: %d”,add(a,b));
printf(“the sub: %d”,sub(a,b));
printf(“the mul: %d”,mul(a,b));
printf(“the div: %d”,div(a,b));
return 0;
}

源码如上所示:

执行编译过程


第一步:编译static_lib.c的源文件,生成一个可重定向的目标文件。

gcc -c static_lib.c

执行完成之后,会多出一个 static_lib.o文件。

第二步:使用 ar 工具创建静态库

语法: ar rcs 静态库名 目标文件1 目标文件2 … 目标文件n

其中: r 把列表中的目标文件加入到静态库中
c 如果库不存在就创建库
s 更新静态库文件索引,使得其包含新加入目标文件的内容

具体执行语句:

ar rcs libstatic_lib.a static_lib.o

注意:静态库的库命名为:lib+静态库的名字。

注意:在最新的 ubuntu16的版本里面,可以省略那个lib文件。

也就是执行如下语句:

ar rcs static_lib.a static_lib.o

查看发现,多出一个 static_lib.a的文件。

第三步:使用静态库
首先是在目标文件main.c中加入static_lib.h的头文件,具体内容如上所示。

 其次使用 gcc -L/ -l 来指定静态库。
 -l(小写的L)      来指定静态库
 -L                    来指定库文件的搜索路径 如果使用“.” 代表搜索当前路径

 其中 l 及 L 后直接带参数都不带空格。

例子:
gcc -L/home/Linux main.c -lstatic_lib -o app
或者
gcc -L. main.c -lstatic_lib -o app

注意,因为 -l是连接器选项。一定要放到被编译文件的后面。

本例子中因为在相同的目录下,所以本例子的语句是:

gcc -L. main.c -lstatic_lib -o app

或者本类也可以使用 static选择直接连接静态库使用

gcc main.c -static ./libstatic_lib.a -o app

这样也可以的。

第四步:执行生文件,结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值