1.Ubuntu下安装automake
sudo apt-get install automake
将会安装automake相关的工具
2.编辑源文件
vim hello.c
3.执行autoscan
Autoscan工具用来扫描源代码以搜寻一般的可移植性问题,比如检查编译器、库和头文件等,并创建configure.scan文件,它会在给定目录及其子目录树中检查源文件,若没有给出目录,就在当前目录及其子目录树中进行检查。
简要介绍configure.scan文件:
- AC_PREREQ:声明本文件要求的autoconf版本,本例使用的版本为2.69
- AC_INIT:用来定义软件的名称和版本等信息,”FULL-PACKAGE-NAME”为软件包名称,”VERSION”为软件版本号,”BUG-REPORT-ADDRESS”为BUG报告地址(一般为软件作者邮件地址)
- AC_CONFIG_SRCDIR:用来侦测所指定的源码文件是否存在,来确定源码目录的有效性。此处为当前目录下的hello.c
- AC_CONFIG_HEADER:用于生成config.h文件,以便autoheader使用
- AC_PROG_CC:用来指定编译器,如果不指定,选用默认gcc
- AC_OUTPUT:用来设定 configure 所要产生的文件,如果是makefile,configure会把它检查出来的结果带入makefile.in文件产生合适的makefile。使用Automake时,还需要一些其他的参数,这些额外的宏用aclocal工具产生
4.重命名configure.ac
复制一份configure.scan,命名为configure.ac,修改configure.ac文件内容:
5.执行aclocal
aclocal根据configure.ac生成aclocal.m4
6.执行autoconf
将configure.ac中的宏展开,生成configure脚本。这个过程可能要用到aclocal.m4中定义的宏
7.执行autoheader
autoheader根据configure.ac 生成 config.h.in。
8.创建Makefile.am
automake工具会根据configure.in中的参量把Makefile.am转换成Makefile.in文件。所以在使用automake之前我们需要自己创建Makefile.am文件
- AUTOMAKE_OPTIONS:为设置Automake的选项。由于GNU对自己发布的软件有严格的规范,比如必须附带许可证声明文件COPYING等,否则Automake执行时会报错。Automake提供了3种软件等级:foreign、gnu和gnits,供用户选择,默认等级为gnu。本例需使用foreign等级,它只检测必须的文件。
- bin_PROGRAMS:定义要产生的执行文件名。如果要产生多个执行文件,每个文件名用空格隔开
- hello_SOURCES:定义”hello”这个执行程序所需要的原始文件。如果”hello”这个程序是由多个原始文件所产生的,则必须把它所用到的所有原始文件都列出来,并用空格隔开。例如:若目标体”hello”需要”hello.c”、”hello.h”两个依赖文件,则定义hello_SOURCES=hello.c hello.h。
9.执行automake
automake生成”Makefile.in”文件,使用选项”–add-missing”可以让automake自动添加一些必需的脚本文件
10.执行./configure
生成makefile文件
测试: