目录
(一)静态库
(1)静态库的制作流程
将源码进行只编译不链接处理;
gcc -c xxx.c -o xxx.o
(2)制作静态库
ar rc lib库名.a xxx.o
(3)使用静态库编译程序
-l(小写L) 指明库名
-L 指明库路径
-I(大写i) 指明头函数地址
静态库特点:以空间换取时间
这里推荐三个比较好用的宏
这三个宏使用时包含stdio.h:
__LINE__ 代码所在行号
__FUNVTION__ 代码所在的函数名
__FILE__ 代码所在的文件名
(二) 动态库(共享库)
(1)将源码进行只编译不链接
gcc -c xxx.c -o xxx.o
(2)制作动态库
gcc -shared -fPIC -o lib库名.so xxx.o
(三)动态库使用
方法一:
将动态库放到系统默认动态库路径中 (/usr/lib /lib)
-l(小写L) 指明库名
-L 指明库路径
方式二:
添加环境变量 LD_LIBRARY_PATH
修改环境变量使用到的shell指令: export
用法: export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:要添加的新路径
例如:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xyd/204/0417/project/src
gcc work_2.c -I../include -ltest -L. -o tt
注意:export 指令如果在终端使用,仅在当前终端有效,而且系统重启该设置无效
如果想要export 永久有效,将语句返回系统配置文件(/etc/profile)中,在终端输入source /etc/profile使其生效
方式三:(了解)
编译时指明动态库路径
gcc work_2.c -I../include -ltest -L. -o tt -Wl,-rpath=.
方式四:(了解)
在/etc/ld.so.conf文件中添加一个动态库所在的路径
然后终端输入ldconfig
动态库特点:以时间换取空间
动态库更新,使用到动态库的可执行程序不需要重新编译