linux系统中,头文件位于/usr/include目录及其子目录中
gcc -I/usr/openwin/include fred
.c I标志可以指定编译器不仅在标准位置找头文件,也在非标准位置(/usr/openwin/include)找头文件
grep EXIT_ *
.h 在
.h文件中搜索 EXIT_字符串
linux 中库文件总是以lib开头,
它的类型分为两种,
.a 代表传统静态函数库,
.so 代表共享函数库
gcc -o fred fred
.c /usr/lib/libm
.a 这条命令的意思就是编译器编译文件fred
.c 将编译产生文件命名为fred,除了搜索标准c函数库,还搜索
数学库
你也可以用l 来解决
gcc -o fred fred
.c -lm lm代表 标准库下 名称libm
.a的函数库
下面编译静态库的例子说明:
创建两个文件fred
.c bill
.c
frec.c:
#include<stdio.h>
void red(int arg){
printf(
"fred:we passed %d\n",arg)
}
第二个文件
#include<stdio.h>
void bill(char *arg){
printf(
"bill: we passed %s\n",arg)
}
gcc -c bill
.c fred
.c 编译这两个文件生成目标文件 -c 不生成执行程序
ls *
.o 查看生成的
.o文件
现在写一个头文件 lib
.h 声明这两个函数
void bill(char*)
void fred(int)
写一个调用程序program
.c
#include<stdlib.h>
#include"lib.h"
int main(){
bill(
"hello world")
exit(
0)
}
现在可以生成可执行程序
gcc -c program
.c
gcc -o program prgoram
.o bill
.o
./program
现在生成静态库文件
ar crv libfoo
.a bill
.o fred
.o
ranlib libfoo
.o
现在函数库可以使用
gcc -o program program
.o libfoo
.a
./program
你也可以使用这条命令
gcc -o program program
.o -L. -lfoo
-L. 表示库的位置 在当前目录下
-lfoo 表示库的名称 libfoo
.a