详解Linux下auto工具制作Makefile源码包(工具安装篇)
一、引子
最近学习安装源码包,然后公司开发也需要制作源码包,所以就稍微学习了一下automake与autoconf制作configure以及Makefile。感觉作为一个linux开发人员,不知道制作源码包,真是妄为linux人呐!学习的同时,就顺便整理了一下网上的资料,并记录下来,供以后查阅,也为方便初学者。
题目说的有点大了,其实只是笔记而已,只供菜鸟使用。
咱们都知道make好用,但是大型的软件make是很麻烦的,为了解决这个问题,先人们就发明了autoconf与automake工具,用这些工具可以非常方便的制作configure与Makefile,那么咱们就开始这个美妙之旅吧。
二、概述和基础知识
在Linux下得到一个以源代码形式发布的包(一般为.tar.gz或.tar.bz2格式),我们可以用 ./confiugure、make、make install来编译安装,其中在运行./configure的时候还可以根据自己的需要加入不同的参数(可用./configure --help来查看参数表)。
那么究竟这些configure,Makefile是从哪儿来的呢?刚开始安装过源码包的人估计都会犯嘀咕,其实就是通过autoconf与automake等工具生成的。
三、工具软件介绍
废话还是少说,简单的说下automake与autoconf工具。我们说要安装下面至少四个软件,我是说至少,当然有可能在安装的过程中还要安装其他软件,脑瓜灵活点儿
这个四个就是Automake、autoconf、m4、perl,如果你需要sharedlibrary,那么不好意思,你还要装Libtool。这些工具都是干什么的?且听我一一到来。
automake用来生成Makefile.in文件。
autoconf是用来产生configure文件的。
m4主要用来提供生成aclocal.m4文件所需要的库,具体什么是m4,人家都说就是macro,也就是说m后面有四个字母,这虽然有点扯,但是姑且信之。
perl呢?就是在制作Makefile的过程中要用到perl脚本,所以得安装这个库。其他的就不多介绍了,都是成人了。
四、工具软件的安装
上面也已经介绍的差不多了,我想大多数人都会安装,为了方便你我他,我还是记录下来为妙。首先,我悄悄的把这些源码包下载的地址告诉大家,一条龙服务:
各软件下载地址:
automake-1.8.tar.gz下载地址:http://ftp.gnu.org/gnu/automake/
m4-1.4.14.tar.bz2下载地址: http://ftp.gnu.org/gnu/m4/
autoconf-2.66.tar.bz2下载地址: http://ftp.gnu.org/gnu/autoconf/
perl-5.14.0.tar.gz下载地址: http://www.perl.org/get.html#unix_like
libtool-1.3.2.tar.gz下载地址: http://ftp.gnu.org/gnu/libtool/
上面的版本仅供参考,我只是想告诉你地址而已。
其实安装源码包也非常简单,就是那些依赖有些恼火。所以在安装源码包前阅读INSTALL或者 README是一个良好的习惯。安装之前可以用“locate 软件名”来查看是否安装,如果找到了再/usr/bin/下面,那就不用再安装了,也可以用“软件名 --version”来查看软件的版本。
1、 安装autoconf
解压autoconf-2.66.tar.gz,进入autoconf-2.66文件夹,执行命令:
#./configure
#make
#make install
这也是三部曲了。如果不出错那么安装就完成了,如果出错可以找相应的解决办法。看看安装在哪里可以用命令:locate autoconf,用autoconf –version可以查看版本。
2、安装automake
automake-1.8的安装需要依赖autoconf,所以autoconf版本必须在2.58以上,这里上一步骤我们用autoconf-2.66
解压automake-1.8.tar.gz,进入automake-1.8目录,执行如下命令:
[root@localhost perl-5.14.0]# ./Configure -des -Dprefix=$HOME/localperl
[root@localhost perl-5.14.0]# make test
[root@localhost perl-5.14.0]# make install
虽然这几个命令怪怪的,但是这是从INSTALL中看的,我相信它。
3、安装m4
安装m4时候有可能会出现/m4-1.4.14/src/path.c:118: undefined reference to `S_ISDIR'的错误,据网上传说这是个bug,要想解决这个问题,有两种方法:
a、修改m4目录下的源文件path.c,
打开path.c
在#include "m4.h"后面加上#include "sys/stat.h"。
b、在http://bugs.gentoo.org/332839下载patch,用patch命令打上补丁,这里的补丁比较简单,我们就用方法a。
打上补丁后就可以按照常规方法安装了
#./configure
#make
#make install
4、安装libtool
解压# tar xvzf libtool-1.3.2.tar.gz,再用cd进去 # cd libtool-1.3.2
然后进行安装软件的三部曲:
[root@localhost libtool-1.3.2]# ./configure
[root@localhost libtool-1.3.2]# make
[root@localhost libtool-1.3.2]# make install
这个安装比较顺利,风调雨顺,一路快马加鞭就成功了。
基本上我们要制作makefile文件的工具已经安装成功了,大功告成!