1、区别
静态库是在运行之前加到程序当中
动态库是运行时加到程序当中的
2、优缺点:
静态库:
优点: 编译时间短、速度快
缺点:1、编译产生的程序大
2、更新麻烦
动态库:
优点:1、编译产生的程序小
2、更新方便
缺点:编译的时间长、速度慢
静态库(xxx.a)和动态库(xxx.so)的生成使用:
1、生成静态库文件:
材料:主程序:xxx.c(来调用库的主程序) 函数文件:xxx.c(主程序要调用的具体函数) .h文件:xxx.h(主程序要调用的函数的声明)
步骤:
1、gcc -c xxx.c 生成xxx.o的文件
2、ar rcs libxxx.a xxx.o 生成libxxx.a的静态库文件
2、生成动态库:
材料:和静态库一样
gcc xxx.c -fPIC –shared –o 目标文件
xxx.c 源文件.c文件
-fPIC 生成位置无关码
3、使用静态库:
gcc calculator.c -lcalculfunc -L ./
-lcalculfunc -l加上静态库去掉lib和.a后缀
-L ./ 指定在当前目录寻找静态库 若当前目录无此静态库 则在/usr/lib/和/usr/local/lib目录下找
4、使用动态库
1、将动态库路径加入环境变量 export LD_LIBRARY_PATH=" xxx " xxx为动态库的文件路径
2、编译 gcc xxx.c -lxxx -L ./ (和静态库一样)
补充:
chmod +x xxx.sh 给脚本文件运行权限