make编译笔记(六)

25 篇文章 0 订阅
16 篇文章 0 订阅

make工具与函数库

函数库文件是对Object文件(程序编译的中间文件)的打包文件。在Linux下,一般由命令ar来完成打包工作。

函数库文件的成员

一个函数库文件由多个文件组成,可以以如下格式指定函数库文件及其组成

archive(member)

不是命令。是一个目标和依赖的定义。这种用法是为ar命令来服务的。

编译函数库:

abclib(data.o):data.o
ar cr put data.o

生成函数库文件put

如果要指定多个member,以空格分开

函数库成员的隐含规则

当make搜索一个目标的隐含目标时,一个特殊的特性是如果这个目标是a(m)形式的,则会把目标变成(m)。当成员是以%.o的模式定义时,如果使用make abc.a(abc.o)的形式调用Makefile,隐含规则回去找abc.o的规则;如果没有定义abc.o的规则,那么内建隐含规则生效,make去找abc.c文件来生产abc.o

函数库文件的后缀规则

可以使用后缀规则和隐含规则来生成函数库打包文件

例:

.c.a:
    $(CC) $(CFLAGS) $(CPPFLAGS)-c $< -o &*.o
    $(AR)r $@ $*.o
    $(RM)$*.o
#等效于
(%.o):%.c
    $(CC) $(CFLAGS) $(CPPFLAGS)-c $< -o &*.o
    $(AR)r $@ $*.o
    $(RM)$*.o

注意

小心使用make的并行机制(-j参数)。如果多个ar命令在同一时间运行在同一个函数库打包文件上,就可能损坏这个函数库文件。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值