下载contiki2.6源码:
http://download.csdn.net/detail/crystal736/5149740
打开makefile.include文件,这个是在contiki系统根目录中,而非工程目录,在contiki源码中有很多工程,在example目录里面,每一个目录对应一个工程,比如cc2530dk目录中就对应的是cc2530平台的工程,记住有makefile文件的当前目录才是工程目录,所以makefile.include的当前目录就不是工程目录。
本文将从makefile.include开始解读,一步一步深入包含contiki操作系统的工程的编译过程(以cc2530dk为例)。其中会涉及到makefile和shell相关知识,我会一一解释清楚。
先打开example/cc2530dk/makfile文件
CONTIKI_PROJECT = hello-world blink-hello timer-test sensors-demo
all: $(CONTIKI_PROJECT)
CONTIKI = ../..
include $(CONTIKI)/Makefile.include
CONTILI_PROJECT变量定义的是最后生成的目标文件,即可执行文件,这里生成了四个可执行文件,为什么要这么做呢?因为通常来讲makefile只能生成一个终极目标,这里用到了all伪目标(没有命令行的规则,或者没有规则的命令),即all依赖于以上四个可执行的文件。如果不这样做的话,即没有用all伪目标,则最终只能生成一个可执行文件hello-world 或 blin-hello
第三句定义变量CONTIKI 为上级目录的上级目录,即为contiki的根目录,因为要用下面一句
include $(CONTIKI)/Makefile.include 包含根目录里面的makefile.include ,此时make就会停止读取当前的Makefile,转而去读Makefile.include
用souceinsight打开Makefile.include,内容较多,我们逐步来解析。