库文件
库是一组预先编译好的方法的集合。 Linux 系统存储的库的位置一般在: /lib 和 /usr/lib。
在 64 位的系统上有些库也可能被存储在/usr/lib64 下。库的头文件一般会被存储在
/usr/include 下或其子目录下。
库有两种,一种是静态库,其命令规则为 libxxx.a,一种是共享库,其命令规则为 libxxx.so。
静态库的生成
a.c b.c head.h
以上是需要生成静态库的“.c”文件,其中“head.h”中是函数的声明,“a.c”,“b.c”是函数的定义
1.将需要生成库的文件的所有“.c”文件编译成“.o”文件
gcc -c a.c
gcc -c b.c
2.使用ar命令将第一步生成的所有“.o”文件生成静态库
ar crv libab.a a.o b.o
其中:c是创建库;r是将方法添加到库中;v显示过程
静态库的使用
#include "head.h"
测试代码中需要包含指定的库文件
gcc test.c -o test -L. -lhead
- -L:指定库的存储路径
- -l:指定库的名称(不需要前面的‘lib’和扩展名‘.a’)
项目目录
- include:存放项目的头文件
- lib:库文件
- src:源代码文件
项目中静态库的使用
结构图如下所示
1.将src中需要生成库的文件的所有“.c”文件编译成“.o”文件,需要注意头文件在include中,因此在编译时需要指定include包含文件的搜索目录。
gcc -c add.c sub.c mult.c div.c -I ../include/
2.使用ar命令将第一步生成的所有“.o”文件生成静态库,需要指定lib文件夹
ar rcs ../lib/libcalc.a add.o div.o mult.o sub.o
3. 链接:需要指定include文件夹的头文件以及指定库文件的位置以及库文件的名称
gcc main.c -o main -I ./include/ -L ./lib -l calc