/*
动态库基本实现
c
libxx.so xx是库名 .so 后缀
gcc -shared -fpic -o libxx.so yyy.c
发布到
/usr/local/include/
/usr/local/lib
在 /etc/ld.so.conf 中添加路径
/sbin/ldconfig 重读 /etc/ld.so.conf 为了上面的步骤生效
gcc -I/usr/local/include -L/usr/local/lib -o ... -lxx
ldd 命令
非 root 用户发布
cp xx.so ~/lib
export LD_LIBRARY_PATH=~/lib
当动态库与静态库重名 首先链接动态库 尽量不要重名
*/
llish.h,llist.c,mian.c,Makefile
c
gcc -shared -fpic -o libllist.so llist.c 生成libllist.so
cp llist.h /usr/local/include/
cp libllist.so /usr/local/lib/
vim /etc/ld.so.conf 添加路径 /usr/local/lib/
/sbin/ldconfig 运行重读 生效
gcc -o main main.c -lllist
./main
ldd ./main
下面进行举例 针对 本专栏文章 C-数据结构-链式存储栈(二次封装)
llist.c llist.h main.c Makefile stack.h stack.c
c
gcc -share -fpic -o libstack.so stack.c 生成libstack.so
mv libstack.so /usr/local/lib/
cp stack.h /usr/local/include/
/sbin/ldconfig 重读
gcc -o main main.c -lstack -lllist 双重链接依赖,有依赖关系时,被依赖的库写后面
ldd ./main
下面进行举例 针对 本专栏文章 C-数据结构-链式存储队列
llist.c llist.h main.c Mkaefile queue.c queue.h
c
gcc -shared -fpic -o libqueue.so queue.c 生成libqueue.so
mv libqueue.so /usr/local/lib/
cp queue.h /usr/local/include/
/sbin/ldconfig 重读
gcc -o main main.c -lqueue -lllist
./main