第5篇,关于编译的法则:Makefile和makerules

tinyos当中,如果对应的application文件夹下面只有*.nc文件是没有办法完成编译的,我们还需要相应的makefile文件。

Makefile文件是编译的时候,指定ncc编译器去编译哪个程序(COMPONENT),并使用什么样的方式(由makerules所指定)去编译。

 

通常,一个标准的Makefile的内容为:

COMPONENT={application name}

include ../Makerules

 

vvfangblog当中所说的不同(可能是版本不同的原因),根据我的经验,实际上tinyos在编译每个app的时候,是会运行app里的makefile定义的include ../Makerules, 不信你把那条语句删掉试试,出现如下提示:

Make: *** No rule to make target  ‘pc’ .Stop

 

tinyos程序的文件位置:

那么下一个问题就可以解决。例如不想把自己的app放到官方指定的位置: /opt/tinyos-1.x/apps,比如,我就把我自己编写和修改的程序放到如下文件夹: /opt/tinyos-1.x/apps/myworks 和官方给的例子程序区别开。程序放到这个文件夹下还是不可以直接编译的,我们需要把/opt/tinyos-1.x/apps 下面Makerules文件也复制到/opt/tinyos-1.x/apps/myworks下,编译就没有任何问题。

 

结论如下:

1.  tinyos中,一次典型的编译需要如下文件在一个文件夹中:

 moudule file

 顶级configuration file

 makefile

 以及其他文件

系统已有的文件是不需要专门放到这个文件夹下面,tinyos的编译器会自己去找到相应的系统调用。

  makefile中有:

 COMPONENT={application name}

include ../Makerules

 

COMPONENT必须和应用程序的名字一致,不需要和文件夹名字一致。

 

  

2. 自己编写的应用程序,不必非要放在apps文件夹下面,但是程序文件夹的上层(外层)必须有makerules文件,才可以成功编译。


观察到在/opt/tinyos-1.x/apps也有makefile,打开看到是对应该目录下所有的例子程序的make法则。那么你可以在/opt/tinyos-1.x/apps下,直接敲入

make pc

那么它对应的功能自然就是:编译所有例子程序!!!

 

不知道为什么,我这里在编译到HighFrequencySampling的时候出错,具体原因没时间仔细看,哪位同学有解决方案,请告知,谢谢!

 

附录:关于Make Makefile

 

无论是在Linux 还是在Unix 环境中,make 都是一个非常重要的编译命令。不管是自己

进行项目开发还是安装应用软件,我们都经常要用到make make install。利用

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值