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
实验1 生成静态库文件
最新推荐文章于 2023-04-24 12:10:29 发布