实验1 生成静态库文件

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





















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值