2.3 静态库和动态库

 


1.静态库:在程序编译时加载静态库
优点:一旦程序链接完成就不再依赖原来的静态库
缺点:会使程序体积变大
2.动态库:在程序执行时加载
优点:大大减少程序的体积
缺点:程序的执行依赖于该动态库文件,若动态库不存在则程序无法执行

cd/usr/lib

制作静态库:
1.完成函数实现的源文件
2.将函数源文件编译成二进制文件
gcc -c filename.c -o filename.o
3.将二进制文件制作成库文件
ar crs lib库名.a filename.o
4.编译文件时可使用如下方式:
gcc main.c -o main -L. -l库名


制作动态库:
1.完成函数实现的源文件
2.函数源文件编译成二进制文件
gcc -c -fPIC filename.c -o filename.o
3.生成动态库
gcc -shared filename.o -o lib库名.so
4.将动态库放入到制定路径下:
cp lib库名.so /usr/lib
5.编译程序时可以加上该库
gcc main.c -o main -l库名

================================================================

main.c

1 #include "head.h"
2 int main()
3 {
4     int ret = 0;
5     ret = add(3,5);
6     printf("result is %d\n",ret);
7 
8     return 0;
9 }

add.c

1 #include "head.h"
2 int add(int a,int b)
3 {
4     return a+b;
5 }

 

posted @ 2017-03-15 17:04  bkycrmn  阅读(100)  评论(0)    收藏  举报