静态库和动态库
区别:
1.静态库在程序的链接阶段被复制到了程序中;
2.动态库在链接阶段没有被复制到程序中,而是在程序执行时由系统动态加载到内存中供程序使用
命名规则:
1.Linux: libxxx.a
2.windows: libxxx.lib
静态库的制作:
执行 gcc -c add.c div.c mult.c sub.c
请看:
流程:
输入 ar rcs libcalc.a add.o sub.o mult.o div.o
生成静态库成功
静态库的使用
library假设是我们的工程
我们 cp -r …/lesson04/libcalc.a ./lib/
将之前执行好的静态库 拷贝到本项目的Lib文件中
main.c 中的#include “head.h”
这个头文件 是当前文件下没有的所以
gcc main.c -o app -I ./include/
执行这一段命令
但是你没有用这个静态库哦就会有以下报错
gcc main.c -o app -I ./include/ -l clac -L ./lib
-L 库的路径 -I头文件路径 -l 库的名称
路径要对哦~
实现成功
动态库制作
命名规则:
Linux: libxxx.so
windows:libxxx.lib
对*.c操作完 对*
.o在操作 如下
生成.so
将生成的.so 拷贝到当前Lib文件下
通过lld检查动态库依赖关系 这个不是很重要
修改/加入 环境变量
$
获取路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:你动态库的绝对路径
但是终端退出之后,又会失效,所以会消失,所以我们要永久的配置好环境变量如果是永久的话
用户级别:
回到家目录,修改.bashrc末尾加上export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:你动态库的绝对路径
source使用该资源
总结:
静态库:
动态库:
静态库优缺点
动态库优缺点: