一. 静态库的制作和使用
1. 命名规则: libtest.a (test为静态库的名字)
2. 制作步骤:
- 先由源代码.cpp或.c文件生成.o文件:gcc a.c b.c -c
- 将.o文件用ar工具打包成静态库: ar rcs libtest.a a.o b.o
3. 使用
gcc test.c -I ./ -L./lib -ltest -o app
第一个是 -I(大写 i): 指定编译时的头文件路径
第二个是 -l(小写 L): 连接的库名称
二、动态库的制作和使用
1.命名规则: libxxx.so
2.制作步骤:
- 将源文件生成.o : gcc a.c b.c -c -fpic(fpic)
- 打包:gcc -shared -o libxxx.so a.o b.o
3.使用
有头文件:a.h
有动态库:libtest.so
编写测试程序:main.c
gcc main.c -I ./ -L ./ -ltest -o app
三、解决动态库无法加载的问题
动态加载器会按一定顺序在系统中查找动态库的路径,如果找不到就会报错 not found.
1.通过配置环境变量来配置:
1.临时设置:
在终端敲命令: export LD_LIBRARY_PATH = 动态库的路径:$LD_LIBRARY_PATH
2.永久设置:
用户级别 : 在~/.bashrc 文件后添加:export LD_LIBRARY_PATH = 动态库的路径:$LD_LIBRARY_PATH,然后source ~/.bashrc
系统级别 : 在/etc/profile文件中添加: export LD_LIBRARY_PATH = 动态库的路径:$LD_LIBRARY_PATH,然后source /etc/profile
2.更新/etc/ld.so.cache文件列表
1.找到配置文件
/etc/ld.so.conf
把动态库的绝对路径添加到文件中
2.执行一个命令
sudo ldconfig -v