Autoconf 是一个用于生成可移植的 shell 脚本(通常是 configure 脚本)的工具集,用于自动化软件包的配置过程。
Autoconf 包含以下核心工具和组件:
autoconf
主要工具:用于生成 configure 脚本。
输入文件:configure.ac(或旧版的 configure.in)。
通过宏扩展(m4 宏处理器)将 configure.ac 转换为 configure 脚本。
automake
辅助工具:生成符合 GNU 标准的 Makefile.in 文件。
输入文件:Makefile.am(定义编译规则)。
依赖 autoconf,生成的 Makefile.in 会被 configure 脚本进一步处理为最终的 Makefile。
aclocal
自动化宏收集工具:
扫描 configure.ac 和本地宏定义,生成 aclocal.m4 文件。
解决用户自定义或第三方宏的依赖问题。
autoheader
生成配置头文件模板:
根据 configure.ac 中的宏(如 AC_CONFIG_HEADERS),生成 config.h.in。
最终由 configure 脚本生成 config.h,供代码使用。
autoreconf
自动化工具链:
按需调用 autoconf、autoheader、aclocal、automake 等工具。
简化重建整个构建系统的流程。
autoscan
辅助工具:
扫描源代码目录,生成初步的 configure.scan(可重命名为 configure.ac 并修改)。
帮助用户快速创建初始配置模板。
ifnames
条件编译辅助工具:
提取源代码中使用的 #ifdef 或 #if 条件,帮助编写 configure.ac 中的宏检查。
辅助脚本和宏库
GNU Autoconf 宏库:
提供预定义的 m4 宏(如 AC_PROG_CC、AC_CHECK_LIB),用于检测系统特性。
config.guess / config.sub:
用于识别系统类型(CPU-供应商-操作系统三元组)。
典型工作流程
- 编写 configure.ac(定义配置需求)。
- 运行 autoconf 生成 configure 脚本。
- (可选)使用 automake 处理 Makefile.am 生成 Makefile.in。
- 用户执行 ./configure 生成最终的 Makefile 和 config.h。
这些工具共同构成了 GNU Autoconf 生态系统,帮助开发者实现跨平台的软件配置。如果需要更深入的用法,可以参考官方文档或 info autoconf。
使用Autoconf生成配置脚本需要GNU M4。 在配置Autoconf之前,应该安装GNU M4(尽管我们建议使用1.4.13或更高版本,但是至少需要使用1.4.6版本),以便Autoconf的configure脚本可以找到它。 Autoconf生成的配置脚本是独立的,因此其用户不需要安装Autoconf(或GNU M4)。
m4的意思:
m4是macro宏的缩写,因为macro的m后面有4个字母。