TinyOS的个人见解3之make
来源:互联网 发布:剑灵女枪手捏脸数据图 编辑:程序博客网 时间:2024/06/07 04:48
以简单的Blink为例,Blink目录下的Makefile文件
COMPONENT=BlinkAppC
include $(MAKERULES)
可以看到MAKERULES这个是上一篇环境变量的export所声明过的,也就是../support/make目录,这个目录下文件基本介绍:
*.target---------target文件,指明编译平台也就是make telosb/cc2538cb(对应为telosb.target和cc2538cb.target)
打开cc2538cb.target文件:
#-*-Makefile-*- vim:syntax=make
PLATFORM = cc2538cb
ifdef CC2520_CHANNEL
PFLAGS += -DCC2520_DEF_CHANNEL=$(CC2520_CHANNEL)
endif
PFLAGS += -I$(TOSROOT)/tos/chips/cc2538/fwlib
$(call TOSMake_include_platform,cc2538cb)
$(call TOSMake_include_make_platform,cc2538cb)
cc2538cb: $(BUILD_DEPS)
@:
我们看到的是声明平台是cc2538cb以及编译规则目录是cc2538cb
*.extra ----------编译的额外说明文件,主要是指比如blip.extra,coap.extra,主要是对你编译时候用到的其他库的一个补充,这些额外库的编译选项已经组件目录路径
下面则是编译的rules。对于telosb对应是msb目录,对于cc2538cb则为cc2538cb目录,里面会有xxx.rules目录,这个也就是make的核心文件;
再此不再详细介绍:
总结编译过程 比如编译命令为make cc2538cb blip id.1
过程为执行cc2538cb.rules的编译过程同时 引入blip的库组件以及 设置编译的rf的短地址为1
COMPONENT=BlinkAppC
include $(MAKERULES)
可以看到MAKERULES这个是上一篇环境变量的export所声明过的,也就是../support/make目录,这个目录下文件基本介绍:
*.target---------target文件,指明编译平台也就是make telosb/cc2538cb(对应为telosb.target和cc2538cb.target)
打开cc2538cb.target文件:
#-*-Makefile-*- vim:syntax=make
PLATFORM = cc2538cb
ifdef CC2520_CHANNEL
PFLAGS += -DCC2520_DEF_CHANNEL=$(CC2520_CHANNEL)
endif
PFLAGS += -I$(TOSROOT)/tos/chips/cc2538/fwlib
$(call TOSMake_include_platform,cc2538cb)
$(call TOSMake_include_make_platform,cc2538cb)
cc2538cb: $(BUILD_DEPS)
@:
我们看到的是声明平台是cc2538cb以及编译规则目录是cc2538cb
*.extra ----------编译的额外说明文件,主要是指比如blip.extra,coap.extra,主要是对你编译时候用到的其他库的一个补充,这些额外库的编译选项已经组件目录路径
下面则是编译的rules。对于telosb对应是msb目录,对于cc2538cb则为cc2538cb目录,里面会有xxx.rules目录,这个也就是make的核心文件;
再此不再详细介绍:
总结编译过程 比如编译命令为make cc2538cb blip id.1
过程为执行cc2538cb.rules的编译过程同时 引入blip的库组件以及 设置编译的rf的短地址为1
知道这些后你可以个性化你的make规则!!!
补充说明 编译一个例程的Makefile文件的编写,如Blink,Blink目录下的Makefile文件
COMPONENT=BlinkAppC
include $(MAKERULES)
最基本你需要指定COMPONENT= xxxx,最后指定make目录,你会发现其他的例程中间还有很多,那些都是一些堆代码编译的宏定义而已
那么现在我说明一下为什么保留2.2.12release的make方式呢,你不用怀疑现在代码不是github同步的,实际上你可以去对比,代码和githun tinyos到现在为止组件尤其是库组件是同步的。
不喜欢github代码上现在的做法是因为,make的不灵活,您可以自己去看他现在的make方式已经丧失了从tinyos一直以来的灵活的make方式,那就是每个平台有自己的rules,现在的这种捆绑让就从2530就开始移植的我感到非常反感。.pltform等文件的指定目录当然是进步,但是将所有的编译弄进自己的makefile,rules是否是一个好的方法我保留意见。
代码的例程我采用nesc-1.4.2版本,最新版本是1.3.5.1,也就是能配合编译github最新的那个nesc编译器,我测试过没什么大用处,毕竟你可以去看nesc编译器1.3.5.1的更新日志,对现在的代码编译来说没什么用处。
也许以后我会妥协移植遵守他的make写法,但是不是现在,除非某些库组件确实必须用到nesc1.3.5.1的一些新特性,但是至少现在没有.......
0 0
- TinyOS的个人见解3之make
- TinyOS的个人见解3‘之认识平台
- TinyOS的个人见解1
- TinyOS的个人见解4之任性的cc2538
- TinyOS的个人见解2之ncc编译过程
- 我的注入方法之个人见解!
- 面向对象的特征之个人见解
- J2ME的个人见解
- UML的个人见解
- Http的个人见解
- GeoQuiz的个人见解
- JVM 的个人见解
- 反射的个人见解
- BeautifulSoup的个人见解
- Android之Activity个人见解
- 性能优化之个人见解
- 面向对象之个人见解
- ssl/tls之个人见解
- python: Fatal IO error 11
- linux中send函数MSG_NOSIGNAL异常消息
- 优秀程序员不得不知道的20个位运算技巧
- ArcGIS教程:路径距离工具的工作原理(一)
- Mongodb学习笔记(三)
- TinyOS的个人见解3之make
- 遇到错误javax.el.PropertyNotFoundException: Property 'start' not found on type java.lang.String
- 把网站从vps转移到虚拟主机后伪静态不能从
- 支持向量机SVM——LIBSVM
- 黑马程序员——Java基础---面向对象
- cf A. Wilbur and Swimming Pool
- Android studio小技巧之xml与Java类快速跳转
- 多线程Runtime.getRuntime().exec常见问题
- Oracle trunc()函数的用法