工具简介
autoconf是一个用于生成可以自动地配置软件源码包,用以适应多种 UNIX类系统的shell脚本工具,其中autoconf需要用到 m4,便于生成脚 本。automake是一个从Makefile.am文件自动生成Makefile.in的工具。 为了生成 Makefile.in,automake还需用到perl,由于automake创建的 发布完全遵循GNU标准,所以在创建中不需要perl。 libtool是一款方便 生成各种程序库的工具。
目前automake支持三种目录层次:flat、shallow和deep。
- 1) flat指的是所有文件都位于同一个目录中。
就是所有源文件、头文件以及其他库文件都位于当前目录中,且没有子 目录。Termutils就是这一类。
- 2) shallow指的是主要的源代码都储存在顶层目录,其他各个部分则
储存在子目录中。
就是主要源文件在当前目录中,而其它一些实现各部分功能的源文件位 于各自不同的目录。automake本身就是这一类。
- 3) deep指的是所有源代码都被储存在子目录中;顶层目录主要包含配置信息。
就是所有源文件及自己写的头文件位于当前目录的一个子目录中,而当 前目录里没有任何源文件。 GNU cpio和GNU tar就是这一类。
flat类型是最简单的,deep类型是最复杂的。不难看出,我们的模拟需 求正是基于第三类deep型,也就是说我们要做挑战性的事情:)。注:我 们的测试程序是基于多线程的简单程序。
生成 Makefile 的来龙去脉
首先进入 project 目录,在该目录下运行一系列命令,创建和修改几个 文件,就可以生成符合该平台的Makefile文件,操作过程如下:
1 运行autoscan命令
2 将configure.scan 文件重命名为configure.in,并修改configure.in文件
3 在project目录下新建Makefile.am文件,并在core和shell目录下也 新建makefile.am文件
4 在project目录下新建NEWS、 README、 ChangeLog 、AUTHORS文件
5 将/usr/share/automake-1.X/目录下的depcomp和complie文件拷贝到 本目录下
6 运行aclocal命令
7 运行autoconf命令
8 运行automake -a命令
9 运行./confiugre脚本
![]() |
| 生成Makefile流程图 |
官方下载地址
Autoconf (2.59): ftp://ftp.gnu.org/gnu/autoconf/
Autoconf的内容
Autoconf 能生成用于自动配置源代码的 shell 脚本。
安装下列程序: autoconf, autoheader, autom4te, autoreconf, autoscan, autoupdate 和 ifnames
简短说明
autoconf是一个产生可以自动配置源代码包,生成shell脚本的工具,以 适应各种类UNIX系统的需要。autoconf 产生的配置脚本在运行时独立于 autoconf ,因此使用这些脚本的用户不需要安装autoconf。
- autoheader
- 能够产生供configure脚本使用的C #define语句模板文件。
- autom4te
- 对文件执行 GNU M4。
- autoreconf
- 如果有多个autoconf产生的配置文件,autoreconf可以 保存一些工作,它通过重复运行autoconf(以及在合适的地方运行 autoheader)以重新产生autoconf配置脚本和配置头模板,这些文件 保存在以当前目录为根的目录树中。
- autoscan
- 程序可以用来为软件包创建configure.in文件。 autoscan在以命令行参数中指定的目录为根(如果未给定参数,则以 当前目录为根)的目录树中检查源文件。它为通常的轻便问题搜索源 文件,并且为那个包创建一个configure.scan文件,这个文件就是 configure.in的前身。
- autoupdate
- 程序将一个调用autoconf 宏的旧名称的configure.in 文件中的宏更新为新的名称。
- ifnames
- 当为一个软件包写configure.in 时,ifnames可以提供一 些帮助。它打印包中那些在C预处理器中已经使用了的表示符。如果 一个包已经设置成具有某些可移植属性,这个程序能够帮助指出它的 配置应该如何检查。它可以用来填补由autoscan产生的 configure.in中的隔阂。
Autoconf 安装依赖关系
Autoconf 依赖于: Bash, Coreutils, Diffutils, Grep, M4, Make, Perl, Sed.
autoconf的一个详细帖子
- 参考文件

