库文件是预先编译好的方法的集合,库文件分为静态库和共享库,在Linux操作系统中,静态库的扩展名为.a,共享库的扩展名为.so。
静态库
(1)特点
在程序链接阶段被复制到程序中
(2)创建静态库 源文件 fun.c main.c
gcc -c main.c fun.c //生成相应的.o文件
//使用ar将目标文件归档
ar crv libxxx.a main.o fun.o
libxxx.a则是生成的静态库。
共享库
(1)特点
在程序运行阶段被动态加载到内存中
(2)创建共享库 源文件max.c
gcc -fPIC -shared -o libxxx.so max //#1
gcc -c -fPIC max.c
gcc -shared -o libxxx.so max.o //#2
上面两种方式都可以创建共享库,libxxx.so则是生成的共享库
静态库和动态库的区别
- 静态库在程序链接阶段复制到程序中,共享库在程序运行阶段动态加载到内存中;
- 静态库多次使用会生成多份拷贝,占用较多内存。共享库只需要加载一次,多次使用只会生成相同的副本,节省内存空间;
- Linux下静态库的文件扩展名为.a,共享库的文件扩展名为.so