什么是库?
本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。
在Linux中,库是一种预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。
标准系统库文件一般存储在/usr/lib和/lib目录中 ,库文件名字总是以lib开头。Linux操作系统支持的函数库分为:
1.a 代表传统的静态函数库 即libxx.a
2.so 代表共享函数库 即libxx.so
一.静态库做法:
ar crv libxx.a add.o max.o
如图:
图1:创建静态库,命名fun
图2:将创建好的库放入 /usr/lib 中
若库在本地,则使用时即gcc -o main main.o -L. -l库名;
若库已经放入/usr/lib ,使用时则gcc -o main main.c -l库名 即可。
二.共享库做法
gcc -shared -fPIC -o libfun.so add.o max.o
gcc -shared -fPIC -o libfun.so add.c max.c
gcc -shared -fPIC add.c max.c -o libfun.so
图3:创建一个名为fun的共享库,并放入/usr/bin
三.静态库 与共享库的区别
即
静态库:编译时已经装载 生成比较大的可执行文件
共享库:边运行边装载 节省空间