原创  是makefile不是makelove 收藏

原来一听makelove很来劲,但听到makefile就不知道是啥了。

最近除了公司的活,还在做开源项目skyeye,设备的模拟还在研究,

等将整个架构熟悉后会总结一下的。

 

来makefile吧,现在原来很多开源项目都用make管理,原来自己不知道这套东西,

只知道那套。。。 想想很土啊很土。

在skyeye leader的帮助下稍微弄懂了makefile里的东西,原来makefile不是makelove.

 

makefile是啥,这里就不解释了,wiki一下,有问题就wiki是个好习惯,这个方法也是

刚从一些大牛那学到的。

 

现在来说一个makefile是怎么make出来的,需要3个工具配合搞出来。

1. autoscan;

2. autoconf;

3. automake;

 

例如你有一个项目src, 例如她的名字叫linzhiling.

step1:

在linzhiling的顶层,运行autoscan

这样他就会生成一个configure.scan的文件,这个文件里包含了一些版本信息和编译器检查什么的,

还有就是你这个项目的代码目录结构,自己看一看根据需要修改。

然后将configure.scan重命名为configure.in(你问我为什么要给人家改名,因为autoconf只要configure.in)

 

step2:

运行autoconf;

这里autoconf会根据上面生成的configure.in来生成configure

"configure"熟悉了吧,用过Linux的都感到面熟了,在README或什么INSTALL里经常看到的

第一个词;

 

step3:

手写一个Makefile.am,在里面写一些你要编译的源码的名字,具体如何写可以找个项目看看;

然后automake;

它会根据Makefile.am来生产Makefile.in的东东.

 

[final]step 4:

就是大家在拿到源码来编译程序是常用的那几步了,

./configure

make

 

综上,回头看一下./configure和make到底都干了啥呢

./configure会去读Makefile.in来生成Makefile

make就不用我说了吧,去make Makefile的;

 

还是喜欢用图,简单表示一下,

autoscan -->configure.scan - >configure.in

autoconf --> configure

automake --> Makefile.in

./configure --> Makefile

make --> "your programme"

 

就写这么多了,老把Makefile打错,真烦;

 

P.S:最近读了很多源码,自己现在越来越懒,不太喜欢记录,改画图了,

以后搞搞visio啥的,看看能不能把一些架构层的东西画出来分享。 

 

发表于 @ 2008年08月06日 22:36:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:工作日Monday -- Sunday | 新一篇:阳光总在风雨后。。。

  • 发表评论
  • 评论内容:
  •  
Copyright © freedom1013
Powered by CSDN Blog