1、头文件、库文件
编程时需要用头文件来提供对常量的定义和对系统函数及库函数调用的声明,这些头文件几乎总是位于 /usr/include目录及其子目录中。。。那些依赖于特定linux版本的头文件通常在 /usr/include/sys 和 /usr/include/linux 中
用C语言编译器时,可以使用 -I 标志来包含保存在子目录或非标准位置中的头文件 eg:
$ gcc -I/usr/openwin/include test.c
它指示不仅在标准位置,也在/usr/openwin/include 目录中查找test.c中包含的头文件
同理,库文件可通过
$ gcc -o hello -L/usr/openwin/lib hello.c -lX11
2、创建自己的静态库~~
自己平时写的一些有用的源文件,可以做成静态库,方便以后使用
如 function1.c 、
#include<stdio.h>
void hello(char arg)
{
printf("hello,%s\n",arg);
}
function2.c .......
#include<stdio.h>
void delay(int time)
{
int i=time;
while(i>0)
{
i--;
}
}
而现在没法创建一个完整的程序,因为木有main函数
$ gcc -c function1.c function2.c // -c 选项阻止编译器创建完整的程序
$ ls *.o
function1.o funtion2.o
现在可以在程序中使用这两个函数了,方法如下
定义一个头文件,声明上面的两个函数 lib.h :
void hello(char arg);
void delay(int time);
然后在程序中 program.c
#include<stdio.h>
#include "lib.h"
int main()
{
hello("linux");
delay(10);
exit(0);
}
编译程序
$ gcc -c program.c
$ gcc -o program program.o function1.o function2.o
$./program
hello linux
$
接下来创建库
$ ar crv libmy.a function1.o function2.o //请注意名字一定要是lib开头
a -function1.o
a -function2.o
(有些系统可能还需要)
$ ranlib libmy.a
现在就可以在编译程序的时候使用该库了
$ gcc -o program program.o libmy.a
也可以
$ gcc -o program program.o -L. -lmy //如果名字不是lib开头,则这个命令出错。。。
-L . 选项告诉编译器在当前目录查找函数库 -lmy 告诉编译器使用名为libmy.a的函数库