首页 详解linux下auto制作Makefile源码包

详解linux下auto制作Makefile源码包

举报
开通vip

详解linux下auto制作Makefile源码包详解linux下auto工具制作Makefile源码包(工具安装篇) 水木杨 一、引子 最近学习安装源码包,然后公司开发也需要制作源码包,所以就稍微学习了一下automake与autoconf制作configure以及Makefile。感觉作为一个linux开发人员,不知道制作源码包,真是妄为linux人呐!学习的同时,就顺便整理了一下网上的资料,并记录下来,供以后查阅,也为方便初学者。 题目说的有点大了,其实只是笔记而已,只供菜鸟使用。 咱们都知道make好用,但是大型的软件make是很麻烦的,为了解决这个问题,...

详解linux下auto制作Makefile源码包
详解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来查看参数 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf )。 那么究竟这些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文件的工具已经安装成功了,大功告成! 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 1、​ 概述 为了更好的制作configure与Makefile,我先把制作流程给写在这里,好让大伙都有个心理准备。这里只说流程,不做解释。(附图供参考) 1、autosan命令生成configure.scan文件,这只是个模板,我们重新编辑这个文件,并把它保存为configure.in文件。 2、aclocal命令生成aclocal.m4文件。 3、autoheader命令生成config.h.in。前提是aclocal.m4和configure.in必须生成。 4、autoconf命令生成configure文件(这个文件都很熟悉吧,嘎嘎)。 5、创建并编辑Makefile.am,这个文件在根目录与子目录都应该有的。 6、automake命令生成Makefile.in。 7、./configure命令,根据Makefile.in生成Makefile文件,这个再熟悉不过了吧。 2、​ 制作 巧妇难做无米之炊,要想完成这次体验,我们还得按规矩一步一步来,源文件得有。首先建个目录Family用来放我们的东西,它下面的东西就多了。源代码什么阿c,阿h啊,都放在src下面,src这个文件夹命名一般都是约定俗成的,我们也不破坏。当然你也可以起其他名字,别搞忘就好。    |-configure.in    |-Makefile.am     |-      |-wife.c      |-daughter.c |-main.c      |-wife.h |-daughter.h      |-Makefile.am ※ 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 : 1. configure.in 这是最重要的文档,整个安装过程都靠它来主导。 2. Makefile.am automake会根据它来生成Makefile.in,再由./configure Makefile.in变成最终的Makefile,一般来说在顶级目录和各个子目录都应该有一个Makefile.am 3. wife.c daughter.c main.c wife.h daughter.h 这是我们的源程序。 不用细看,这些文件除了configure.in是用模板创建手动编辑外,其他都是手动创建并编辑的,如果你还木有,动手吧。其实这里边有个小小的经验,也不一定是对的,只是个人的经验,也就是后缀名为in的文件是生成的模板。 $ mkdir –p Family/src $ touch Makefile.am $ cd src $ touch wife.c daughter.c main.c wife.h daughter.h Makefile.am $ cd .. 进入刚创建的Family目录 $ autoscan 该命令产生 configure.scan 和 configure.log两个文件,然后 $ mv configure.scan configure.in这样configure.in就创建成了。 ※源代码内容: main.c: daughter.c daughter.h wife.c wife.h ※制作流程: 第1步:编辑configure.in文件。 上面用autoscan生成的scan后缀的文件改名而成的configure.in文件,我的用autoconf版本是2.66,貌似autoscan自动生成的模板2.61之前与之后的不大一样,这点可以自己参照自己的版本修改,2.61以后的版本这个文件更简单了。 打开看看: configure.in 未修改版,简单对上面进行说明: AC_PREREQ([2.66])这个宏是用来检测autoconf的版本的。 AC_INIT()是个初始化宏,括号中内容分别为:要生成的软件名称,版本号,bug 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 邮箱 AM_INIT_AUTOMAKE(family,1.0)这个宏是新添加的,不过好像1.8的automake不用添加这个也可以,但是我没有添加的时候在后面make的时候会有“Makefile:15: *** 遗漏分隔符 。 停止。”的问题,而加上则有警告。现在还真有点晕呼呼滴。 AC_CONFIG_SRCDIR([src/wife.c])这个宏是用来检测源码目录的有效性,srcdir就可以看出来,括号里边的文件不一定非得是wife.c,也可以改成其他的。 AC_CONFIG_HEADERS([config.h])这个宏用来生成 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的config.h文件。 接下来的内容就是众多的check了 AC_PROG_CC这个是检测编译器的宏。 我们用的版本不用AC_OUTPUT输出了,还是比较省力的。 第2步:aclocal命令生成aclocal.m4文件 不知为何,我直接用命令: $aclocal 命令总是出错:aclocal aclocal: couldn't open directory `/usr/local/share/aclocal-': 没有那个文件或目录。 最后还是加上绝对路径/usr/bin/aclocal总算是没这个错误,生成aclocal.m4了。 第3步:autoconf命令生成 configure文件 这一步没什么难度,输入命令: $ autoconf 就ok了,autoconf可以根据configure.in和aclocal.m4生成大名鼎鼎的configure,这时候已经可以运行它了,但是会报错,因为Makefile.in还没出现。 那么何为M4呢,M4的名称取自Macro(M后面跟4个字母…)。它和C预处理器里的宏是一个概念(其实,M4和C预处理器都K&R操刀设计的!!),用来处理文本替换。也就是说,M4是bash里的预处理器。 第4步:autoheader命令生成config.h.in $ autoheader通过autoheader命令,我们就可以得到config.h.in这个东东了。有了它,./configure才会生成config.h这个东东,所以不可大意。 autoheader这个工具通常会从“acconfig.h”文件中复制用户附加的符号定义,因此此处没有附加符号定义,所以不需要创建“acconfig.h”文件。 第5步:编辑Makefile.am文件 我们再编译安装源码包的时候都知道./configure可以生成Makefile,殊不知要生成Makefile还全仰仗Makefile.in这个老东西,而这个东西是以in结尾的 ,也是个模板,是由Makefile.am生成的,好了,知道这个来龙去脉了,就着手编写Makefile.am,我们这里Family顶级目录与子目录各有一个,如果还有其他的子目录,理论上也是需要Makefile.am的。我们这就来编辑它: Family/Makefile.am内容如下: Family/src/Makefile.am内容如下: 其中的AUTOMAKE_OPTIONS为设置automake的选项。由于GNU对自己发布的软件有严格的 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 ,比如必须附 带许可证声明文件COPYING等,否则automake执行时会报错。automake提供了三种软件等级:foreign、gnu和gnits,让用 户选择采用,默认等级为gnu。在本例使用foreign等级,它只检测必须的文件,而不用检查README啊什么的。     bin_PROGRAMS定义要产生的执行文件名。如果要产生多个执行文件,每个文件名用空格隔开。     family_SOURCES定义“family”这个执行程序所需要的原始文件。如果”family”这个程序是由多个原始文件所产生的,则必须把它所用到的所有原 始文件都列出来,并用空格隔开。如果源文件名字太长,可以加上”\”行连接符换行书写。 第6步:automake --add-missing命令生成config.h.in $ automake –a或者 automake -–add-missing,大功告成! 注意运行automake命令时一定要加参数,否则不会自动生成install.sh,missing等脚本,这样会出乱子滴。 这样,源码安装包就制作成了,用tar打包就可以了,使用的时候用三部曲./configure,make , make install安装即可,帅吧!
本文档为【详解linux下auto制作Makefile源码包】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_819835
暂无简介~
格式:doc
大小:130KB
软件:Word
页数:9
分类:互联网
上传时间:2011-07-19
浏览量:12