头文件与函数库

来源:互联网 发布:融信网网络贷款 编辑:程序博客网 时间:2024/05/26 09:55
      在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*/  
  1. #include<stdio.h>   
  2. void sayHello()  
  3. {  
  4.     printf("I am saying hello to you!/n");  
  5. }  
  6. /*param.c*/  
  7. #include<stdio.h>   
  8. void hasParam(char* arg)  
  9. {  
  10.     printf("I have a param %s/n",arg);  
  11. }  
  12. /*头文件mylib.h*/  
  13. void sayHello();  
  14. void hasParam(char* arg);  
  15. /**main.c**/  
  16. #include "mylib.h"   
  17. int main()  
  18. {  
  19.     sayHello();  
  20.     hasParam("Param");  
  21.     return 0;  
  22. }  

 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