修改开源代码的configure与makefile

原文地址:http://blog.sina.com.cn/s/blog_55324d170100nnjq.html


一、说明
修改开源软件的时候,常看到长达几万行的configure和几千行的Makefile,于是疑问!

a)         提问:

                         i.              这是人写的吗?

                       ii.              需要看懂它吗?

                      iii.              怎么修改它?

b)        回答:

                         i.              它是自动生成的

                       ii.              不需要看懂它,只需要看懂生成它的配置脚本就可以了(生成它的脚本一般只有几十行,而你也只需看懂你所关心的部分)

                      iii.              主要修改Makefile.amconfigure.in就可了,其它一般都是自动生成的
(
最好不直接修改Makefile文件,因为下次configure时它就像覆盖了)

c)        工具
autoconf
automake

d)        具体步骤
configure.scan => configure.in => configure
Makefile.am => Makefile.in => Makefile

二、准备工作

安装依赖软件包

a)         $ apt-get install gettext

b)        $ apt-get install libtool

c)        $ apt-get install intltool

三、新建项目中,建立configureMakefile

a)         建立源码目录结构

b)        用命令生成基本的configure配置脚本
$ autoscan      //
 生成configure.scan
$ mv configure.scan configure.in  //
 改名

c)        修改基本的configure脚本,加入所需要内容
$ vi configure.in

d)        写各层目录的Makefile.am以备生成Makefile.inMakefile
$ vi Makefile.am

e)         自动生成configure文件,各层目录中的Makefile.in文件
$ aclocal 
$ libtoolize --force
$ autoconf      //
 生成configure
$ automake --add-missing      //
 生成Makefile.in

f)         编译
$ ./configure   //
 此时生成了各层Makefile
$ make; make install

四、已有项目中,修改configureMakefile

a)         修改生成configure所依赖的脚本configure.in
$ vi configure.in
在其中添加新的依赖库及版本判断

b)        修改各层的Makefile.am,以备生成Makefile.inMakefile
$ vi Makefile.am
加入新的子目录

加入新的代码文件
加入新的依赖库

c)        自动生成configure文件,各层目录中的Makefile.in文件
方法同上
可以把上面四行写成autogen.sh脚本,以方便每次修改完configure.inMakefile.am后直接执行

d)        编译
同上

五、参考

a)         完整例程详见(含源码及脚本)
http://xy0811.spaces.live.com/default.aspx?_c01_BlogPart=blogentry&_c=BlogPart&handle=cns!F8AECD2A067A6B17!1002

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值