(1)什么是库
(2)静态库的制作
- 汇编 生成对应的.o文件(命令:gcc -c add.c div.c mult.c sub.c)
- 创建静态库(命令:ar rcs libcalc.a add.o div.o mult.o sub.o)
(3)静态库的使用
命令:gcc main.c -o app -I ./include/ -l calc -L ./lib/ (-I【i的大写】代表在include目录下找头文件,-l【L的小写】代表静态库的名称,-L代表在lib目录下找库)
(4)动态库的制作
- 生成.o文件(命令:gcc -c -fpic add.c div.c mult.c sub.c)
- 得到动态库(命令:gcc -shared add.o sub.o mult.o div.o -o libcalc.so)
3. 动态库的使用(命令:gcc main.c -o main -I include/ -L lib/ -l calc)
(5)动态库加载失败的原因---工作原理
配置动态库
1. 配置方法一(临时)
命令:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:【动态库的路径】
注意:该环境变量在终端配置,为一个临时的环境变量,如果换一个终端或者开一个新的终端,依然会显示没有配置
2. 配置方法二(永久 用户)
改变.bashrc文件内容 => 添加动态库的路径
使得修改生效
命令:. .bashrc (或者 source .bashrc) 【.相当于source】
3. 配置方法三(全局 系统)
进入配置文件(命令:sudo vim /etc/profile )
添加动态库路径
使得修改生效
命令: . .bashrc (或者 source .bashrc) 【.相当于source】
4. 配置 /etc/ld.so.cache 【该文件不能直接打开,但是可以通过改变/etc/ld.so.conf间接改变.cache文件】
进入文件命令:sudo vim /etc/ld.so.conf
将动态库路径输入在内
更新修改(命令:sudo ldconfig)
5. /lib/ , /usr/lib方式不建议使用,因为里面已经存在很多系统自带的动态库,若自己的动态库和系统的动态库重名了,可能会误改系统内容
(6)静态库和动态库的对比