在C语言中,头文件提供对常量的定义和对系统函数及库函数调用的声明(函数原型)。存放的标准位置是/usr/include目录及其子目录。
gcc的-I选项(增加头文件的搜索路径):gcc -I/usr/myInclude main.c 在标准位置及/usr/myInclude目录下查找main.c包含的头文件。
库文件是一组预先编译好的函数的集合,可以说是头文件函数原型的实现。存放的标准位置是/lib和/usr/lib目录。库文件总是以lib开头。标准C语言库文件(函数库)为libc.a文件。
gcc -o main main.c 默认情况,gcc只搜索标准C语言函数库。需要其他库如数学库(libm.a libm.so)则额外添加这一路径:
gcc -o main main.c /usr/lib/libm.a,
gcc -L选项(增加库文件的搜索路径): gcc -o main -L/usr/myLib main.c libmtemp.a
库文件类型:静态函数库(静态库).a文件,共享函数库(共享库).so文件.
自己写个静态库:
/*hello.c*/
#include
void sayHello()
{
printf("I am saying hello to you!/n");
}
/*param.c*/
#include
void hasParam(char* arg)
{
printf("I have a param %s/n",arg);
}
/*头文件mylib.h*/
void sayHello();
void hasParam(char* arg);
/**main.c**/
#include "mylib.h"
int main()
{
sayHello();
hasParam("Param");
return 0;
}
Linux下运行命令:
gcc -c hello.c param.c
ar crv libcmy.a hello.o param.o——归档命令,生成库文件libcmy.a
ranlib libcmy.a——为函数库生成内容表,Berkerley Unix衍生系统必需的,Linux非必需(做了也无害)
gcc -o main main.c libcmy.a——运行方式1
gcc -o main main.c -L. -lcmy——运行方式2