有的时候我们实现了一个函数的功能,比例对两个整数的相加,但是我们提供给第三方使用我们函数的时候,不希望对方知道具体是如何实现的,可以把函数制作成静态库的形式提供。
demo.c :实现库函数将两个整数相加
demo.h:函数原型放在.h文件里提供给第三方调用
main.c 模拟第三方用户,调用静态库
demo.c以及demo.h内容如下:
// demo.c
#include
/*
自己实现的两个整数相加的函数,以静态库的形式提供,
调用者无需关注具体怎么实现,只知道调用的函数名,
以及参数
*/
int my_add(int x,int y)
{
printf("in demo.c >_<.\r
");
return x+y;
} // demo.h
#ifndef __DEMO_H__
#define __DEMO_H__
int my_add(int x,int y);
#endif在ubuntu环境下使用如下命令生成静态库libdemo.a,
使用gcc -c只编译不连接,生成.o文件。然后使用ar工具包打包成.a归档文件。库名不能随便起,一般是lib+库名称,后缀名.a表示是一个归档文件。制作出静态库之后,后续发布只需要发布.a和.h,即可隐藏具体的代码实现。
在main.c里调用静态库的my_add函数,代码如下:
#include
#include "demo.h"
int main(void)
{
int sum = 0;
sum = my_add(1,2);
printf("sum = %d\r
",sum);
return 0;
} 编译以及连接静态库的命令如下:
gcc main.c -o test.bin -ldemo -L.
使用-ldemo就是告诉编译器在libdemo.a里找使用的函数。-L. 是指定连接器在那个目录下寻找库文件,句点.表示当前目录。
额外的小知识使用nm命令查看一个.a文件里都有哪些符号表
| 留言与评论(共有 0 条评论) “” |