contiki2.6之Makefile详细解读五

本文详细解读了Contiki2.6中Makefile的构建过程,从%.hex到%.ihx,再到%.app.rel和%.c文件的编译规则,涉及到编译器选项、依赖文件及Segment Rules的处理。通过对Makefile的逐步剖析,揭示了cc2530平台下程序编译的各个环节,有助于理解如何在Contiki中添加自定义文件。
摘要由CSDN通过智能技术生成

     继续上篇未完的内容。

%.hex: %.ihx
     $(PACKIHX) $< > $@

这里我们寻找依赖文件hello-world.ihx的建立规则,

%.ihx: $(OBJECTDIR)/%.app.rel $(CONTIKI_TARGET_MAIN) contiki-$(TARGET).lib
       $(CC) $(LDFLAGS) -o $@ $(CONTIKI_TARGET_MAIN) $(OBJECTDIR)/$*.app.rel -llibsdcc.lib -lcontiki-$(TARGET).lib > /dev/null

继续寻找obj_cc2530/hello-world.app.rel 的建立规则

$(OBJECTDIR)/%.app.rel: %.c $(SEGMENT_RULES)
        $(CC) $(call c_seg,$<,$@) -DAUTOSTART_ENABLE $(CFLAGS) -c $< -o $@

依赖文件hello-world.c文件已经存在,所以寻找SEGMENT_RULES变量所代替的文件的重建规则。


SEGMENT_RULE_FILES = $(foreach dir, . $(CONTIKI_PLATFORM_DIRS) \
         $(CONTIKI_CPU_DIRS_LIST), $(wildcard $(dir)/segment.rules) )

$(SEGMENT_RULES): $(SEGMENT_RULE_FILES)
         cat $(SEGMENT_RULE_FILES) | \
             sed -e 's/#.*$$//' -e 's/^\s*//' -e '/^$$/d' > $@

经过分析我们知道SEGMENT_RULE_FILES表示的在某些目录中的segment.rules文件列表

好!我们找到了这个文件,分别是cpu/cc253x/segment.rules platform/cc2530dk/segment.rules

既然找到了,而且肯定比目标新,那么就执行命令。这里用到了管道,将这些segment.ruls的内容最为sed的输入调用sed命令,让后将其重定向到目标文件obj_cc2530dk/segment.rules中,这个文件不存在,那么就创建它。

这个sed命令有点烦,因为它用到了正则表达式,-e选项表示后面跟的是正则表达式。s为替换命令,我大致说一下意思,就是将segment.rules文件中不符合它要求的字符行全部替换为空,或者删除。这些不符合要求的行为

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值