实验1 生成静态库文件

xiaoxiao2021-02-28  103

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
转载请注明原文地址: https://www.6miu.com/read-27851.html

最新回复(0)