一、静态库
libxx.a
xx 指代库名
1.1 创建静态库
先生成一个.o文件
gcc -c llist.c =>llist.o
语法:ar -cr libxx.a yyy.o
- -cr 创建静态库
ar -cr libllist.a llist.o
发布到:
头文件:/usr/local/include
cp llist.h /usr/local/include
库文件:/usr/local/lib
mv libllist.a /usr/loca/lib
1.2 调用静态库
语法:
gcc -L/usr/local/lib -o main main.c -lxx
gcc -L/usr/local/lib -I/usr/local/include main.c -o main -lllist
-l 参数必须在最后,有依赖
-L:指定库文件位置
-I:指定头文件位置
二、动态库
libxx.so
xx 指代库名
2.1 创建动态库
语法:gcc -shared -fpic -o libxx.so yyy.c
gcc -shared -fpic -o libllist.so llist.c
发布到
头文件:/usr/local/include
cp llist.h /usr/local/include
库文件:/usr/local/lib
mv libllist.so /usr/loca/lib
在 /etc/ld.so.conf 中添加路径(库文件所在路径 /usr/local/lib)
sudo vim /etc/ld.so.config
/sbin/ldconfig ->重读 /etc/ld.so.conf
sudo /sbin/ldconfig
2.2 调用动态库
gcc -I/usr/local/include -L/usr/local/lib main.c -o main -lxx
gcc main.c -o main -lllist
2.3 查看动态库
ldd - print shared library dependencies
ldd main
非 root 用户发布
cp xx.so ~/lib
export LD_LIBRARY_PATH=~/lib