【发布时间】:2014-12-29 12:53:02
【问题描述】:
我正在为嵌入式系统开发,这意味着我必须使用链接器脚本。这没什么大不了的。我从以下 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 文件列表的情况下添加此依赖项?
【问题讨论】:
-
为什么不用
$(OFILES)代替$^?
标签: linker makefile dependencies