静态函数库和动态函数库的制作
2016-04-10 14:33
489 查看
函数库可以分为静态函数库和动态函数库,对于linux,函数库主要存在/lib 和/usr/lib目录下,其中后缀名是'.a'的代表是静态函数库,后缀名是'.so'动态函数库,我们一般编译的时候默认是使用动态函数库的,如果想使用静态函数库需加上 static ,像这样:gcc -static main.c -o main,接下来介绍一下静态函数库和动态函数库的做法:
静态函数库的制作
1.编写库的源文件:mylib.c 和 mylib.h
2.编写测试函数库的源文件:
tets.c
3.编译我们的库源文件,使它生成.o目标文件:
gcc -c mylib.c -o mylib.o
4.将目标文件生成静态函数库:
ar cqs libmylib.a mylib.o
( ar是生成库的命令,cqs是参数,libmylib.a是生成的静态链接库须以lib开头,mylib是库名,a表示是静态链接库)
5.将libmylib.a复制到/usr/lib下:
cp libmylib.a /usr/lib
6.测试我们所写的静态函数库:
编译运行测试函数:
gcc test.c -lmylib -o test
(-lmylib其中-l可以说是代表了动态链接库libmylib中的lib)
若发现是自己想要的结果,就说明静态库制作成功!附上自己的源码:
//mylib.c int fuc(int m,int n) { int p = m - n; if ( m <= 10 ) { return p; } if ((m > 10)&&(m <= 20)) { return 2*p; } if ((m > 20)&&( m <= 30) ) { return 3*p; } }
//test.c #include <stdio.h> #incldue <mylib.h> void main() { int count = 0; count = fuc(30,15); printf("count is : %d\n", count); }
//mylib.h int fuc(int m, int n);
动态函数库的制作
我们继续用做静态函数库的那个例子:1.前几步和静态函数库制作的1~3步是一样的
gcc –c mylib.c –o mylib.o
2.生成目标文件之后,采用下面的命令
gcc -shared -fPIC mylib.o -o libmylib.so
(-shared是指明产生动态链接库, -fpic 使输出的对象模块是按照可重定位地址方式生成的,libmylib.so是生成的动态链接库须以lib开头,mylib是库名,so表示是动态链接库)
3.将制作好的libmylib.so 复制到/usr/lib
cp libmylib.so /usr/lib
4.测试我们所写的动态函数库
gcc test.c -lmylib -o test
(-lmylib其中-l可以说是代表了动态链接库libmylib中的lib)
源码和制作静态函数库的一样 >_<
———————-END——————————
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍