我正在为嵌入式系统开发,这意味着我必须使用链接描述文件。这没什么大不了的。我从以下Make规则开始,将所有内容链接在一起:
$(RELEASETARGET) : $(OFILES)
$(LD) -Tlinker_script.ld --entry ResetISR --gc-sections $(LIBDIR) -o $@ $^ $(LIB)
如您所见,此行包含错误:linker_script.ld是此规则的依赖项,但在依赖项中未提及。但是如果我只是将它添加到deps的末尾:
$(RELEASETARGET) : $(OFILES) linker_script.ld
$(LD) -Tlinker_script.ld --entry ResetISR --gc-sections $(LIBDIR) -o $@ $^ $(LIB)
它也会在-o之后添加到列表中,程序将无法在设备上运行。
这些警告都不是有害的,但我喜欢没有它们。简单地删除-Tlinker_script.ld部分并且只将脚本添加到依赖项列表中是不可能的:然后配置将无法正确加载,程序将无法在设备上运行。
那么,如何在不将其添加到.o文件列表的情况下添加此依赖项?
答案 0 :(得分:0)
最简单的解决方案是使用$(OFILES)
,正如@Banthar所提到的那样。如果您不想这样做,可以使用filter
仅返回目标文件:
$(LD) ... -o $@ $(filter %.o,$^) $(LIB)