以 add.c 为例
1.创建库函数的源文件:vim add.c
2.生成目标文件:gcc -c add.c -fpic
3.生成动态库:gcc add.o -o libadd.so -shared
备注:libadd.so:lib是前缀,add是库的名字,so是后缀,代表是动态库
4.建立调用库函数的源文件:vim demo.c
5.编译执行:gcc demo.c ./libadd.so
静态库和动态库的区别
1.静态库的后缀是 .a,动态库的后缀是 .so;
2.在编译链接的时候,对于静态库链接器是把静态库里的函数拷贝到调用的地方,调用一次拷贝一次;
——》对应实验现象:mv liabadd.a ../之后,./a.out是可执行的。
对于动态库,链接器是在调用的地方做个“标记”,调用的时候再去动态库里面进行加载
——》对应的实验现象:mv libmath.so ../之后 ,./a.out 是不可执行的
3.链接动态库的可执行文件一般比静态库的可执行文件要小
4.默认的链接方式为动态链接,如果要静态链接的话加个参数 -static