【GNU】《GNU Autoconf》基础----未消化
原文:https://www.jianshu.com/p/bbffda22fee8
第二章 如何运行configure以及Makefile标准
2.1 configuring
讲解了./configure 命令的用法,列举了典型的命令参数
如 '--prefix=prefix' 用来指定路径
示例:./configure --prefix=/opt/gnu
并不推荐在源代码的路径中运行configure,这样容易混乱,不便于再次配置源代码用于其他系统平台
2.2 cinfigure产生了哪些文件
configure之后主要生成一下几个文件:
config.cache:存放系统检测数据,可被手动修改和删除的纯文本文件
config.log:存放configure中每一步的test操作以及test结果
config.status:可以用来重新产生configuration配置文件
config.h:许多package使用configure的源码是用C或者C++语言写的,config.h中预定义了一些可能会被用到的宏
Makefile:主要目的
附录C:生成文件之间的依赖关系
C.1 aclocal
aclocal生成‘acloca.m4’文件,定义了文件‘configure.in’所需要的各种宏,包含了已有库中的宏、用户自定义宏以及‘acinclude.m4’文件中的内容
aclocal关系图
C.2 autoheader
autoheader在‘configure.in’的基础场运行‘aclocal.m4’文件,同时,当autoconf运行时,需要‘acconding.h’头文件,从而生成‘confi.h.in’
autoheaderg
C.3 automake and libtoolize
automake and libtoolize
C.4 autoconf
autoconf产生configure脚本
C.5 configure
前面四个命令都是为了生成运行configure所需的文件,
configure
C.6 make
make产生目标文件
make
从网上看到一个关系图,比较清楚:
Autotools调用流程
2.3 最常用的Makefile命令
make all
make check
make install
make clean
第三章 Makefile语法简介
all: foo
foo: foo.o bar.o baz.o
.c.o:
<tab> $(CC) $(CFLAGS) -c $< -o $@@
.l.c:
<tab> $(LEX) $< && mv lex.yy.c $@@
target1: dep1 dep2 ... depN
<tab> cmd1
<tab> cmd2
<tab> ...
<tab> cmdN
target2: dep4 dep5
<tab> cmd1
<tab> cmd2
dep4 dep5:
<tab> cmd1
默认宏变量
The default value for $(CC) is 'cc'.
$@和$<分别是目标文件和第一个依赖关系
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构