Makefile--使用make更新函数库文件
发布日期:2021-05-24 22:26:49 浏览次数:22 分类:精选文章

本文共 968 字,大约阅读时间需要 3 分钟。

使用Make更新函数库文件

函数库文件的定义与打包命令

在Unix系统中,函数库文件(Library File)通常由ar命令打包生成。函数库文件包含多个编译生成的中间文件(Object File, 即.o文件),这些文件在程序运行时共同提供功能支持。

函数库成员的指定

函数库文件中的成员可以通过以下方式定义:

  • 如果单独指定成员文件,格式为:
    <库名>
    (
    <成员文件>
    )

    例如:

    foolib(hack.o) : hack.o    ar cr foolib hack.o
  • 如果定义多个成员文件,成员文件需要用空格分隔:
    foolib(hack.o kludge.o)

    等价于分别执行:

    foolib(hack.o) foolib(kludge.o)
  • 支持Shell文件通配符定义,例如:
    foo.a(*.o)

    这表示所有.o文件都会被打包到foo.a中。

内建隐含规则的应用

在Makefile中,如果目标是形如"a.m"形式,隐含规则会将目标转换为"m"形式。特别是,当规则形式为"foo.a(bar.o)"时,Make会自动查找"bar.o"的规则。如果没有定义,Make会执行以下操作:

  • 查找"bar.c"文件进行编译。
  • 如果编译成功生成"bar.o"文件,则执行"ar r foo.a bar.o"命令打包。
  • 后缀规则的应用

    通过定义suffix规则,制定自动化打包流程。例如:

    .c.o :    $(CC) $(CFLAGS) $(CPPFLAGS) -c $<    mv $*.o $*.o$.a*$$.o ::    $(AR) r $@ $<    $(RM) -f $*

    该规则等同于:

    %.o : %.c    $(CC) $(CFLAGS) $(CPPFLAGS) -c $<    mv $*.o $*.o

    打包后,通过$(RM)命令清除中间文件。

    使用注意事项

    • 避免并行处理 (-j 参数): 为了避免同时运行多个ar命令,造成函数库文件损坏,建议以 -j 1 调用Make。
    • 清理操作: ensure定期清理对象文件与函数库文件,防止过期或资源耗尽导致失败。

    通过上述配置和技巧,Makefile可以自动化地管理函数库的打包与更新流程,提高开发效率。

    上一篇:英语语法--代词
    下一篇:Makefile--隐含规则

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年05月09日 22时26分53秒