一、静态库
1.生成二进制文件
gcc -c hello.c -o hello.o //gcc -c xxx.c -o xxx.o
2.制作静态库文件(把.o文件转换成.a文件)
ar crs libmykun.a hello.o //生成libmykun.a这个静态库文件
//ar crs libyyy.a xxx.o
// libyyy.a xxx为库名
3.编译时链接
gcc main.c -L. -lmykun //-L表示指定库路径,-l表示指定具体的库
//gcc main.c -L. -lyyy
二、动态库
1.生成地址无关二进制文件
gcc -fPIC -c hello.c
2.制作动态库文件
gcc -shared -o libkunkun.so hello.o // libxxx.so
3.编译时链接
gcc main.c -L. -lkunkun //-L表示指定库路径(指定库路径在当前路径),
//-l表示指定具体的库,后接名字,不加lib和.so
4. ./a.out运行
运行a.out会报错,没有将库路径加载到默认路径上
注:动态库程序运行时需要去默认路径加载库
1.把动态库文件拷贝到/lib或者/usr/lib目录下(方法1,不推荐)
或
2.配置动态库搜索文件(方法2,推荐)
sudo vi /etc/ld.so.conf.d/my.conf //不能修改就touch然后sudo shmod
把动态库路径存放进文件 //pwd库的当前路径,复制进my.conf
sudo ldconfig /etc/ld.so.conf.d/my.conf
eg:
静态库
初始有lqueue.c 、lqueue.h、main.c
动态库
有的地方写错了,忽略