本文将介绍如何使用autotools生成一个Makefile文件,并在此基础上使用dh-make和debuild生成一个可发布的deb程序包,这也是我们在Linux下开发应用程序以及想要发布应用程序需要做的。 无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或 make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 Makefile工具就可以轻而易举的理顺各个源文件之间纷繁复杂的相互关系。其中 Makefile 文件是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中纪录有文件的信息,在make时会决定在链接的时候需要重新编译哪些文件。 Makefile的基本结构不是很复杂,但当一个程序开发人员开始写Makefile时,经常会怀疑自己写的是否符合惯例,而且自己写的Makefile经常和自己的开发环境相关联,当系统环境变量或路径发生了变化后,Makefile可能还要跟着修改。所以手动编写Makefile,对任何程序员都是一场挑战。幸而有GNU 提供的Autoconf及Automake这两套工具可以然我们自动生成Makefile。
使用automake,程序开发人员只需要写一些简单的含有预定义宏的文件,由autoconf根据这个宏文件生成configure,由automake根据另一个宏文件生成Makefile.in,再使用configure依据Makefile.in来生成一个符合惯例的Makefile。本文将介绍如何利用 GNU Autotools工具来协助我们自动产生 Makefile文件,生成Makefile文件后,我们将接着介绍如何使用dh-make和debuild创建一个Debian的安装包文件(deb)。这个deb文件可以拷贝到别的电脑上使用dpkg安装使用(如果足够好,可以发布!)。 这是使用autotools生成Makefile文件的大体步骤。
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions. // 下面不变 AC_CONFIG_FILES([Makefile])// 设置configure命令所要产生的文件。我们最终期望产生MakefileAC_OUTPUT 所以,经过修改后,我们的configure.in文件是: # -*- Autoconf -*- # Process this file with autoconf to produce a configure script.