一,动静态库
1.什么是库文件?
用来保存函数和变量的仓库,只能使用库文件里的函数或者变量,但无法看到是如何实现的。
例如:printf,scanf,strcpy这些都是库函数,也就是保存在库文件里的函数
2.linux库文件:静态库.a 和动态库.so
3.linux库文件的存放位置:
/lib:系统启动和运行需要的库
/usr/lib:应用程序启动或者运行需要加载的库
4.静态库.a:编译时加载
5.动态库.so:运行时加载
6.如何制作静态库
gcc -c .c文件 生成.o目标文件
ar rcs lib静态库名.a .o文件
gcc test.c -l静态库名,-l只能到/lib和/usr/lib两个目录下找库,所以我们自己写的库要加-L+路径,也可把自己写的库加入到/usr/lib目录下。
制作动态库
gcc -shared -fpic add.c -o lib动态库名.so
在同时有重名动静态库时,优先链接动态库
连接动态库:gcc test.c ./libadd.so -o add
动态库如何升级?:直接替换库
动态库升级:先重新生成新的库,再重新编译
使用动静态库区别?
1.使用动态库编译的程序易于升级,静态库难于升级;
2.使用动态库生成可执行文件小,占用内存小;静态库生成文件大,占用内存大;
3.使用动态库编译程序快于静态库;
4.使用动态库编译程序运行时间慢于静态库;
5.使用动态库难以部署,静态库容易部署。
如何选择动态库与静态库?
编译时间需求和运行时间需求。