原来一听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啥的,看看能不能把一些架构层的东西画出来分享。