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学习之二>的更多相关文章

  1. contiki makefile框架分析 < contiki学习之一 >

    在linux下的工程编译,基本都可以使用makefile这个工具来完成.Contiki OS亦如此,下面分析contiki整个Makefile的框架,对makefile的具体内容暂不做分析.本文依赖于 ...

  2. python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法

    python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...

  3. scrapy爬虫学习系列四:portia的学习入门

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  4. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  5. 深度学习课程笔记(十四)深度强化学习 --- Proximal Policy Optimization (PPO)

    深度学习课程笔记(十四)深度强化学习 ---  Proximal Policy Optimization (PPO) 2018-07-17 16:54:51  Reference: https://b ...

  6. 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用

    目录 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用 24.1 expect实现无交互登录 24.1.1 安装和使用expect 24.2 正则表达式的使用 24 ...

  7. 设计模式学习(二十四):Spring 中使用到的设计模式

    设计模式学习(二十四):Spring 中使用到的设计模式 作者:Grey 原文地址: 博客园:设计模式学习(二十四):Spring 中使用到的设计模式 CSDN:设计模式学习(二十四):Spring ...

  8. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  9. MyBatis学习 之 二、SQL语句映射文件(1)resultMap

    目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...

随机推荐

  1. BUFFER CACHE之主要的等待事件

    原因:资源紧张,等待其释放. 原因的原因:1. lgwr和DBWn进程写太慢:2. Buffer和latch不可用 原因的原因的原因:全表扫描.library cache latches数太多等. 视 ...

  2. Delphi EVariantTypeCastError错误的解决方法

    在执行程序的时候总是提示: ---------------------------Debugger Exception Notification---------------------------P ...

  3. sharepoint 2010 在aspx 写lambda 时错误

    在sharepoint 2010 中,写lambda时,遇到错误.在aspx里面,写lambda表达式, 运行时报错,就不明道理了.经过百般测试,终于找到方法: 错误提示: "/" ...

  4. Linux 中直接 I/O 机制的介绍

    https://www.ibm.com/developerworks/cn/linux/l-cn-directio/ 对于传统的操作系统来说,普通的 I/O 操作一般会被内核缓存,这种 I/O 被称作 ...

  5. redis学习笔记之pipeline

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常 会阻塞并等待redi ...

  6. Devexpress DateEdit选年月 z

    Mask与Display只显示年月2012-02这种格式,但用户选择起来还是不爽,体验太差. 效果如下: 代码: using Microsoft.VisualBasic; using System; ...

  7. Minimax Triangulation

    题意: 按顺序给定一些点,把这些点分割为n - 2个三角形,花费为最大三角形面积,求最小花费 分析: 区间dp,dp[i][j]表示完成区间[i,j]最小花费,dp[i][j]=min(dp[i][j ...

  8. duilib中控件拖拽功能的实现方法(附源码)

    转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41144283 duilib库中原本没有显示的对控件增加拖拽的功能,而实际 ...

  9. 【暑假】[实用数据结构]UVa11995 I Can Guess the Data Structure!

    UVa11995  I Can Guess the Data Structure! 思路:边读边模拟,注意empty的判断! 代码如下: #include<iostream> #inclu ...

  10. 区间DP+next求循环节 uva 6876

    // 区间DP+next求循环节 uva 6876 // 题意:化简字符串 并表示出来 // 思路:dp[i][j]表示 i到j的最小长度 // 分成两部分 再求一个循环节 #include < ...