库文件:存放函数和变量的仓库 特点:只能使用库里的函数和变量 不能看到其实现
静态库.a:当使用静态库时 库里的函数和变量 是在编译时加载到可执行文件
动态库.so:当使用动态库时,库里的函数和变量是在运行时加载到可执行文件的
可执行文件的大小:静态库>动态库-------->内存使用效率
运行效率:静态库>动态库
静态库缺点:内存的使用效率不高
可执行文件的速度:静态库>动态库------->运行效率
可执行文件的功能升级:动态库>静态库-------->功能升级的难易程度(例:QQ微信升级(不需要重新下载))
可执行文件的代码部署:静态库>动态库------>代码部署的位置(静态库经常使用 放在手边,动态库不经常使用 使用时调出来)
库文件的存放位置:lib/usr/lib
rcs :有这个库就添加(覆盖)没有就创建
使用静态库:
gcc -c 源文件;
ar rcs 库文件名 目标文件名
gcc 源文件 -l库名 -L库的路径
计算加法:
创建一个add.c函数
创建一个main.c函数
例:(使用静态库)
gcc -c add.c -o add.o
ar rcs libadd.a add.o
gcc mian.c -ladd -L.
动态库:(使用动态库)
gcc -shared -fPIC 源文件 -o 库名
gcc 源文件 ./库名 -o 可执行文件
例:
gcc -sahred -fPIC add.o -o libadd.so
gcc main.c ./libadd.so -o main