本文用到的循环链表代码来源于《C语言 算法与数据结构 五种双向链表的实现方法》的第三种
静态库
库文件名:libxx.a
xx 指库名
先编译成object文件 gcc -c llist.c
将object文件编译成静态库 ar -cr libxx.a yyy.o
头文件发布到/usr/local/include
库文件发布到/usr/local/lib
gcc -L/usr/local/lib -o main main.o -lxx
gcc -L/usr/local/lib -o main main.c -lxx
-l 参数必须在最后,有依赖
动态库
libxx.so
gcc -shared -fPIC -o libxx.so yyy.c # -fPIC 表示必须与位置无关
头文件发布到/usr/local/include
库文件发布到/usr/local/lib
在 /etc/ld.so.conf 中添加路径 /usr/local/lib
终端运行sudo /sbin/ldconfig #让系统重读 /etc/ld.so.conf
gcc -I/usr/local/include -L/usr/local/lib -o … -lxx
ldd – print shared library dependencies
ldd ./main
#打印出来动态库的依赖关系
非 root 用户发布
cp xx.so ~/lib
export LD_LIBRARY_PATH=~/lib
2021/3/8更新 动态库和静态库的区别
静态库在程序编译时会被连接到目标代码中,程序运行时不再需要静态库;
而动态库在程序编译时,不会放到连接的目标代码中,而是在程序运行时被载入,因此在程序运行时还需要动态库的存在。
© 版权声明
转载请注明出处,并标明原文链接。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
本网站尊重知识产权,如有侵权,请及时联系我们删除。
本站所有原创内容仅用于学习和交流目的,未经作者和本站授权不得进行商业使用或盈利行为。
THE END
暂无评论内容