Makefile 为什么不使用partialImage.o来生成vxWorks映像,而不是将所有对象文件列在链接器中
从rules.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 ${@} 在我的一个项目中
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这样的文件,因为它们只有在生成可执行文件时才需要包含