contiki Makefile.include 四个关注点<contiki学习之二>
Contiki Makefile.include 笔记
约定: makefile 包括Makefile、Makefile.xxx,并不单指Makefile
不对makefile的语法进行分析,仅仅关注几个需要点。
首先要说明,Makefile.include是被用户的工程目录下的"Makefile" include之,这个是必须要做的。
Makefile.include 从上到下,顺序检索。
关注点一:
最开始,编译系统会检查用户是否定义了 contiki 源码根目录、检查用户定义的硬件平台、是否使用ipv6、当前编译系统。如下图:

A 如果用户不在自己的Makefile中定义CONTIKI 这个变量,编译会终止并报错。一般的,应该在工程目录下的Makefile里面定义成这样:
“ CONTIKI = ../.. “
B 检查用户定义的硬件平台:如果命令选择了”make” 而非 “make TARGET=bse” ,会添加工程目录下Makefile.target这个文件,在这个文件里去找TARGET的定义。如果依然没有定义,系统会默认用户选择了”native” 硬件平台。
C 添加 “Makefile.$(TARGET).defines” 文件,这个文件也是存在于用户工程目录下
D 检查是否启用ipv6
E 检查编译环境系统:是windows 还是linux
关注点二:
导入contiki的核心代码、创建obj目标目录。Obj_$(target)目录里当然要存放各种生成的.o文件。如下图:

如上图可以看出 contiki/ 下的 core/ 是被无条件包含进来了----无论你是什么平台或者什么应用。当然,也不是绝对的。如果要裁减一些功能,可以修改变量 “CONTIKIDIRS”的值即可<或许有这样的需要>。接着要在工程目录下创建一个放 ”*.o”文件的地方,以前缀”obj_”命名。
关注点三:
检查用户是否要导入一些上层 application,如果有,则会导入contiki/apps/ 以及Contiki/platform/$(TARGET)/apps/ 下相对应的makefile文件。检查的机制是以用户的Makefile中是否定义了”APPS”变量为标准,如下图:

”APPS”变量在Makefile中的定义形如下图< 以email应用为例>:

关注点四:
导入相应的硬件平台下的makefile,比如是CC2530平台的话,那就导入Makefile.cc2530dk这个makefile,如下图:

具体就有 “target_makefile” 这个变量来搞定了。
target_makefile := $(wildcard $(CONTIKI)/platform/$(TARGET)/Makefile.$(TARGET) ${foreach TDIR, $(TARGETDIRS), $(TDIR)/$(TARGET)/Makefile.$(TARGET)})
OK,上面即是Makefile.include干的主要的事情。其他的就是一些变量赋值什么的。
contiki Makefile.include 四个关注点<contiki学习之二>的更多相关文章
- contiki makefile框架分析 < contiki学习之一 >
在linux下的工程编译,基本都可以使用makefile这个工具来完成.Contiki OS亦如此,下面分析contiki整个Makefile的框架,对makefile的具体内容暂不做分析.本文依赖于 ...
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...
- scrapy爬虫学习系列四:portia的学习入门
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- 深度学习课程笔记(十四)深度强化学习 --- Proximal Policy Optimization (PPO)
深度学习课程笔记(十四)深度强化学习 --- Proximal Policy Optimization (PPO) 2018-07-17 16:54:51 Reference: https://b ...
- 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用
目录 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用 24.1 expect实现无交互登录 24.1.1 安装和使用expect 24.2 正则表达式的使用 24 ...
- 设计模式学习(二十四):Spring 中使用到的设计模式
设计模式学习(二十四):Spring 中使用到的设计模式 作者:Grey 原文地址: 博客园:设计模式学习(二十四):Spring 中使用到的设计模式 CSDN:设计模式学习(二十四):Spring ...
- MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...
- MyBatis学习 之 二、SQL语句映射文件(1)resultMap
目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...
随机推荐
- 【DFS+堆的二叉树结构】15轻院校赛-J-堆
[题目链接:J-堆] 1734: 堆 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 239 Solved: 113 SubmitStatusWeb B ...
- jQuery点击div其他地方隐藏div
$(document).bind("click",function(e){ var target = $(e.target); ){ $("#regionlist&quo ...
- 屏蔽页面js报的错误
有时候,某些js的错误,确实没有什么大影响,但是这个又实在没办法. 一般,下下策采取 <script language="javascript"> function k ...
- java web 学习六(servlet开发2)
一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...
- Devexpress DateEdit选年月 z
Mask与Display只显示年月2012-02这种格式,但用户选择起来还是不爽,体验太差. 效果如下: 代码: using Microsoft.VisualBasic; using System; ...
- ios游戏开发--cocos2d学习(1)
学习cocos2d需要一定的编程基础,最好了解objective-c的语法.至于下载和安装的过程网上有很多,这里不多介绍,直接进入项目的学习. 创建一个cocos2d项目,直接运行,效果如图: 左下角 ...
- Nonlinear Transform
前文中,我们已经学习了linear classification,linear regression,logistic regression三种线性方法. 如何解决这种问题呢? 其实很好解决,只需要加 ...
- public private protected和默认的区别(转自百度)
public private protected和默认的区别 Java中对类以及类中的成员变量和成员方法通过访问控制符(access specifier)进行区分控制.刚学Java语言的同学可能对pu ...
- 时间,闰秒,及NTP
1.时间 格林尼治时间 GMT,以地球自转为准的时间,也叫世界时UT,但是由于自转速度会变化,所以后来不被作为标准. 世界协调时UTC,以原子钟为准,现在时间校准的标准就是原子钟. 2.闰秒 是指地球 ...
- web.py处理文件上传
#coding=utf8 import web urls = ('/','Home', '/upload', 'Upload') app = web.application(urls, globals ...