开发者们为了方便开发,开发了GNU自动构建工具(GUN Autotools)。Autotools核心包括Autoconf和Automake。所谓Autotools,
并不是自动完成整个配置编译过程,而是自动构建配置脚本configure和Makefile。
(1) Autoconf
Autoconf的准确含义是自动创建自动配置脚本(automatically create automatic configuration scripts)。就是自动探测各种不同系统
的各种特性,如是本地编译还是交叉编译,使用的编译器、链接器等程序是什么,编译以及链接程序时需要的头文件、动态库以及它们所
在的路径,等等。
具体工作过程:讲多个shell片段最终合并为一个完整的shell脚本,即configure。Autoconf使用宏定义这些shell片段,开发者需要根
据编译需要,使用这些宏组合Autoconf的源文件configure.ac。然后Autoconf讲源文件configure.ac中的宏展开为具体的配置脚本configure。
Autoconf程序本身使用shell脚本编写,但是Autoconf并没有使用shell完成宏展开功能,而是借助了GNU的M4来完成宏的展开。M4的输
入是宏名,输出是shell脚本片段。Autoconf使用M4定义了一些内置宏,也基于M4封装了一部分宏,且一般以“AC_”开头。
因为M4宏定义很多是第三方程序提供的,可能安装在系统的多个位置,因此GNU自动构建系统编写程序aclocal负责将这些宏定义收集到
文件aclocal.m4,保存在源码的顶层目录下,供自动构建系统使用。