库文件源代码,文件名称coutlib.c
1 #include <stdio.h>
2 unsigned long count(unsigned int a, unsigned int b)
3 {
4 return a+b;
5 }
程序源代码,文件名称cout.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 int main(int argc,char *argv[])
4 {
5 unsigned int x,y;
6 sscanf(argv[1],"%u",&x);
7 sscanf(argv[2],"%u",&y);
8 printf("result is :%u\n",count(x,y));
9 return 0;
10 }
编译静态库:
1 生成.o文件gcc -c countlib.c,产物coutlib.o
2 生成.a库文件ar crv countlib.a countlib.o,产物coutlib.a
编译程序(带静态库coutlib.a编译)
gcc -o count count.c -L./ countlib.a
测试
./cout 2 4
结果 8
编译动态链接库
1 生成.o文件gcc -fPIC -c countlib.c,产物countlib.o
2 生成动态库文件 gcc -shared countlib.o -o countlib.so,产物countlib.so
动态链接库显式调用:在程序代码中书写调用
动态链接库隐式调用:在程序编译的时候调用
这里只说明一下隐式调用
gcc count.c -o count2 -L./ countlib.so
测试
./cout 2 4
结果
错误,没有coutlib.so文件
可以考虑把countlib.so放到/usr/lib下面,也可以考虑在/etc/ld/so.conf.d中把当前路径增加。