4.3 使用 Makefile
利用 configure 所产生的 Makefile 档有几个预设的目标可供使用,我们
只拿其中几个简述如下:
make all
产生我们设定的目标,即此范例中的执行档。只打 make 也可以,此
时会开始编译原始码,然後连结,并且产生执行档。
make clean
清除之前所编译的执行档及目的档 (object file, *.o)。
make distclean
除了清除执行档和目的档外,也把 configure 所产生的 Makefile
也清除掉。
make install
将程式安装至系统中。如果原始码编译无误,且执行结果正确,便可
以把程式安装至系统预设的执行档存放路径。如果我们用
bin_PROGRAMS 巨集的话,程式会被安装至 /usr/local/bin 这个目
录。
make dist
将程式和相关的档案包装成一个压缩档以供散播 (distribution) 。
执行完在目录下会产生一个以 PACKAGE-VERSION.tar.gz 为名称的档
案。PACKAGE 和 VERSION 这两个变数是根据 configure.in 档中
AM_INIT_AUTOMAKE(PACKAGE, VERSION) 的定义。在此范例中会产生
'hello-1.0.tar.gz' 的档案。
make distcheck
和 make dist 类似,但是加入检查包装後的压缩档是否正常。这个目标除了把程式和相关档案包装成 tar.gz 档外,还会自动把这个压缩档解开,执行 configure,并且进行 make all 的动作,确认编译无误後,会显示这个 tar.gz 档已经准备好可供散播了。这个检查非常有用,检查过关的套件,基本上可以给任何一个具备 GNU 发展环境的人去重新编译。就 hello-1.tar.gz 这个范例而言,除了在 RedHat Linux 上,在 FreeBSD 2.2.x 版也可以正确地重新编译。
要注意的是,利用 Autoconf 及 Automake 所产生出来的软体套件是可以在没有安装 Autoconf 及 Automake 的环境上使用的,因为 configure 是一个 shell script,它己被设计可以在一般 Unix 的 sh 这个 shell 下执行。但是如果要修改 configure.in 及 Makefile.am 档再产生新的configure 及 Makefile.in 档时就一定要有 Autoconf 及 Automake 了。
5. 相关讯息
Autoconf 和 Automake 功能十分强大,你可以从它们所附的 info 档找到详细的用法。你也可以从许多现存的 GNU 软体或 Open Source 软体中找到相关的 configure.in 或 Makefile.am 档,它们是学习 Autoconf 及Automake 更多技巧的最佳范例。
这篇简介只用到了 Autoconf 及 Automake 的皮毛罢了,如果你有心加入Open Source 软体开发的行列,希望这篇文件能帮助你对产生 Makefile有个简单的依据。其它有关开发 GNU 程式或 C 程式设计及 Makefile 的详细运用及技巧,我建议你从 GNU Coding Standards3 (GNU 编码标准规定) 读起,里面包含了 GNU Makefile 惯例,还有发展 GNU 软体套件的标准程序和惯例。这些 GNU 软体的线上说明文件可以在 这个网站上找到。
阅读(944) | 评论(0) | 转发(0) |