下面的makefile命令做什么/无符号控制文件
我在生成文件中跨以下命令进行cam:下面的makefile命令做什么/无符号控制文件,makefile,gnu-make,binaryfiles,contiki,Makefile,Gnu Make,Binaryfiles,Contiki,我在生成文件中跨以下命令进行cam: %-nosyms.$(TARGET).elf: %.co $(PROJECT_OBJECTFILES) $(INTERRUPT_OBJECTFILES) contiki-$(TARGET).a $(CC) $(CFLAGS) -o $@ $(filter-out %.a,$^) $(filter %.a,$^) $(filter %.a,$^) $(LDFLAGS) 资料来源: 此命令是否不生成符号控制文件?无符号图像文件的用途是什么?逐件分析: 生成文件
%-nosyms.$(TARGET).elf: %.co $(PROJECT_OBJECTFILES) $(INTERRUPT_OBJECTFILES) contiki-$(TARGET).a
$(CC) $(CFLAGS) -o $@ $(filter-out %.a,$^) $(filter %.a,$^) $(filter %.a,$^) $(LDFLAGS)
资料来源:
此命令是否不生成符号控制文件?无符号图像文件的用途是什么?逐件分析: 生成文件的目标是:
%-nosyms.$(TARGET).elf
先决条件清单如下:
%.co$(项目对象文件)$(中断对象文件)contiki-$(目标).a
目标配方是:
Makefile的逻辑是:
*-nosyms.$(TARGET).elf
文件,请将该文件的时间戳与其所有先决条件的时间戳进行比较。如果任何先决条件较新,则重新生成此文件(即运行给定配方)。如果目标标记为(似乎不是这样),则在不检查时间戳的情况下重建-j
选项提供给make
,则并行执行):
%.co
$(项目对象文件)
$(中断对象文件)
contiki-$(目标)。a
$(CC)$(CFLAGS)-o$@$(过滤掉%.a,$^)$(过滤%.a,$^)$(过滤%.a,$^)$(LDFLAGS)
其中:
:当前目标的名称(即$@
)*-nosyms.$(target).elf
:先决条件列表(即$^
)%.co$(项目对象文件)$(中断对象文件)contiki-$(目标)。a
:先决条件列表中的非-$(过滤掉%.a,$^)
文件*.a
:必备列表中的$(过滤器%.a,$^)
文件*.a
$(过滤掉%.a,$^)$(过滤%.a,$^)$(过滤%.a,$^)
做什么?@darthpeedious:查看更新的答案。filter
和filter out
函数的目的是创建一个排序列表,从非*.a
文件开始,以*.a
文件结束。尽管如此,我认为没有理由使用$(filter%.a,$^)
两次。我已经添加了源代码(以防您感兴趣).a
文件是归档文件,对吗?生成的映像将没有库,是吗?好的,因此有两个可执行的ELF映像。不带nosyms
的适用于调试和测试。带有nosyms
的版本应适合发布(无调试符号)。nosyms
版本的大小也应该更小。基本上,与nosyms
版本相比,调试映像(较大的一个)应该启用-g
编译器标志。
$(CC) $(CFLAGS) -o $@ $(filter-out %.a,$^) $(filter %.a,$^) $(filter %.a,$^) $(LDFLAGS)