修改开源代码的configure与makefile

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

a)         提问:

                         i.              这是人写的吗?

                       ii.              需要看懂它吗?

                      iii.              怎么修改它?

b)        回答:

                         i.              它是自动生成的

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

                      iii.              主要修改Makefile.am和configure.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

三、新建项目中,建立configure和Makefile

a)         建立源码目录结构

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

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

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

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

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

四、已有项目中,修改configure和Makefile

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

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

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

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

d)        编译
同上

五、参考

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

猜你喜欢

转载自blog.csdn.net/hubinbin595959/article/details/84899351