Makefile 为什么不使用partialImage.o来生成vxWorks映像,而不是将所有对象文件列在链接器中

Makefile 为什么不使用partialImage.o来生成vxWorks映像,而不是将所有对象文件列在链接器中,makefile,linker,static-linking,vxworks,build-rules,Makefile,Linker,Static Linking,Vxworks,Build Rules,从rules.vxWorks: partialImage.o: $(PRJ_OBJS) version.o .... $(LD_PARTIAL) $(PRJ_OBJS) .... -o ${@} vxWorks: partialImage.o ..... $(LD) $(LFFLAGS) $(PRJ_OBJS) \ -defsym _VX_DATA_ALIGN=16 \ -T link.RAM \ -o ${@} 在我的一个项目中

从rules.vxWorks:

partialImage.o: $(PRJ_OBJS) version.o ....
    $(LD_PARTIAL) $(PRJ_OBJS) .... -o ${@}

vxWorks: partialImage.o  ..... 
    $(LD) $(LFFLAGS) $(PRJ_OBJS) \
       -defsym _VX_DATA_ALIGN=16 \
       -T link.RAM \
       -o ${@}
在我的一个项目中,我将partialImage和vxWorks分离为单独的dir级别,因为我想向partailImage.o添加更多的内容

所以我的问题是,在vxWorks目标中,我可以只指定partialImage.o而不是PRJ_OBJS吗


为什么现有的vxWorks规则不能做到这一点呢?

我对此进行了测试。我们可以使用partialImage.o或PRJ_OBJS

在我的案例中,使用partialImage.o很有帮助。因为我将目标partialImage.o和vxworks分为不同的制作级别。(较低级别的partialImage.o)

因此,在生成partialImag.o时,除了PRJ_OBJS之外,我还可以添加更多的对象文件(如dataSegPad.o、usrEntry.o、version.o等)

然后在更高级别的make上使用partialImage.o生成vxworks image.o。这避免了将文件(dataSegPad.o、usrEntry.o、version.o)显式添加到vxworks目标(因为它们已经包含在partialImage中)

注意partialImage.o是一个可重新定位的文件,所以不要包含像ctdt.o、symTbl.o这样的文件,因为它们只有在生成可执行文件时才需要包含