作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make 命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile 就不那么容易了。 在本文中,将给大家介绍如何使用 autoconf 和automake 两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用 “./configure”,“make”,“make instal”就可以把程序安装到Linux系统中去了。这将特别适合想做开放源代码软件的程序开发人员,又或如果你只是自己写些小的Toy程序,那么这 个文章对你也会有很大的帮助。 一、Makefile介绍 Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中纪录有文件的信息,在make 时会决定在链接的时候需要重新编译哪些文件。 Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应 的模 块 。 Makefile的基 本结 构 不是很复 杂 ,但当一个程序开发人员开始 写Makefile时,经常会怀 疑 自己写的是否 符合惯例,而且 自己写的 Makefile经常和自己的开发环 境 相关 联 ,当系统环 境 变量 或路 径 发生了变化 后 ,Makefile可能 还 要跟着 修 改。这样就造 成了手工书 写 Makefile的诸 多问 题 ,automake 恰 好 能 很好 地帮助我们解 决这些问 题 。 使用automake,程序开发人员只需要写一些 简单的含 有预 定义 宏 的文件,由autoconf 根 据 一个宏 文件生成configure,由automake 根 据 另 一个宏 文件生成Makefile.in, 再 使用configure 依据 Makefile.in来生成一个符合惯例的Makefile。下面 我们将详 细 介绍Makefile的automake 生成 方法 。 二 、使用的环 境 本文所提 到的程序是基 于 Linux发行 版 本:Fedora Core release 1,它 包含 了我们要用到的autoconf,automake。 三 、从 helloworld入 手 我们从 大家最常使用的例子 程序helloworld开始 。 下面 的过程如果简单地说 来就是: 新建三个文件: helloworld.c configure.in Makefile.am 然后执行: aclocal; autoconf; automake --add-missing; ./confi...