以下以hello.c程序为例
1.执行autoscan
生成configure.scan
这个为configure.ac的模板,内容如下与解释如下
#-- Autoconf --
#Process this file with autoconf to produce a configure script.
#AC_PREREQQ宏声明本文件要求的autoconf版本,这里是2.69
AC_PREREQ([2.69])
#AC_INIT定义软件的名称和信息。(DULL-PACKAGE-NAME为软件名,VERSION为软件
#的版本号,BUG-REPORT-ADDRESS为bug的报告地址,一般为软件作者的邮箱)
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
#AC_CONFIG_SRCDIR用来侦测指定的源码文件是否存在,确定源码目录的有效性。此处
#为当前目录下hello.c
AC_CONFIG_SRCDIR([hello.c])
#AC_CONFIG_HEADER用于生成config.h文件,以便autoheader使用
AC_CONFIG_HEADERS([config.h])
#Checks for programs.
#AC_PROG_CC用来指定编译器,以便不指定的时候默认为gcc
AC_PROG_CC
#Checks for libraries.
#Checks for header files.
#Checks for typedefs, structures, and compiler characteristics.
#Checks for library functions.
#AC_OUTPUT用来设定config要产生的文件。如果是Makefile,config会把它检查出
#来的结果带入Makefile.in文件产生合适的Makefile.
AC_OUTPUT(Makefile)
2.修改configure.scan为configure.ac,并且修改内容
修改后如下
AC_PREREQ([2.69])
AC_INIT([hello, 1.0, xxxxxx.qq.com)
#必须添加AM_INIT_AUTOMAKE,否则下auromake会发生报错
#这个宏描述了我们将要生成的软件包的名字和版本号
AM_INIT_AUTOMAKE(hello,1.0)
AC_CONFIG_SRCDIR([hello.c])
AC_CONFIG_HEADERS([config.h])
AC_PROG_CC
#Checks for libraries.
#Checks for header files.
#Checks for typedefs, structures, and compiler characteristics.
#Checks for library functions.
AC_OUTPUT
3.执行aclocal
生成aclocal.m4
4.执行autoconf
生成configure文件
5.执行autoheader
生成config.h.in
6.添加一些必要文件
touch NEWS README ChangeLog AUTHORS
7.Makefile.am
需要自己写(案例如下)
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=hello.c
AUTOMAKE_OPTIONS为设置的Automake选项。它有三种等级提供给用户选择:foreign,gnu,gnits,默认等级为gnu.在此使用foreign,它只检测必须的文件。
Bin_PROGRAMS定义要产生的执行文件名。如果要产生多个可执行文件,则每个文件名用空格隔开。
hello_SOURCES定义为hello这个程序所需要的原始文件。如果其中由多个文件组成的,则必须用空格进行隔开。
8.执行automake
automake --add-missing
生成configure
9.执行./configure
生成Makefile
10.make
生成程序