如何确保为一个硬件目标编译的对象文件不会用于需要不同编译的不同硬件目标?
在学习嵌入式开发时,我正在使用GNU ARM嵌入式工具链。我已经有了几个开发板(包括STM32F0和STM32F4处理器),并计划在将来制作自己的开发板。我希望使用一个通用的软件存储库进行几次硬件迭代。
显然,我的Makefile中有多个目标,为每个平台调用适当的定义和编译器标志,或者为所有平台一次构建一个make all
。据我所知,make
是一个增量构建系统,只有在源文件被更改时才重新编译目标代码(*.o)文件,如果我使用了不同的定义和选项,它将不会重新编译,并且错误的对象代码将被传递给链接器。
在不同目标之间切换时,我似乎可以很努力地使用make clean
,但这将依赖于人工操作,如果我忘记了可能会产生错误的构建,并且不能用于为各自的硬件生成多个二进制文件的make all
。
编辑注释:每反馈意见,我已经做了简短和重新安排,以使问题更加明确和客观。我不是一般性地问如何使用Make,而是询问如何防止mylib.o
被编译为STM32F0,然后在STM32F4的构建中被重用。
我对其他工具很好奇,欢迎在评论中进行讨论,但这个问题是针对GNU Make的。
发布于 2017-08-09 07:56:34
为了避免在目标之间进行干净的构建,每个目标都必须有单独的构建目录,以便目标依赖关系是独立的,并且使用适当的工具链和构建开关等来具体生成。
https://stackoverflow.com/questions/45576601
复制相似问题