繁体   English   中英

GNU Make版本之间的兼容性

[英]Compatibility between versions of GNU Make

我使用GCC多年来编译使用Eclipse开发的ARM项目。 我决定是时候更新我正在使用的工具了。

我一直在使用CodeSourcery编写的GCC版本,但已从http://gnutoolchains.com/arm-eabi/升级到最新版本。 一切正常,除了Make:

CodeSourcery文件夹包含一个名为cs-make.exe的版本,日期为30/04/2013。 我已经从http://gnutoolchains.com/arm-eabi/下载了较新版本的GCC / GDB到名为SysGCC的文件夹中。 它包含日期为2015年5月27日的应用程序make.exe。

我已经修改了我的makefile以使用SysGCC,它可以正确编译。 但是,如果我随后修改项目以运行make.exe而不是cs-make.exe,则控制台将显示以下错误:

 make -j -k all make: *** No rule to make target `IO.o', needed by `Display.elf'. make: *** No rule to make target `XTPcommon.o', needed by `Display.elf'. make: *** No rule to make target `DisplayCommon.o', needed by `Display.elf'. . . 

我的makefile的内容非常复杂,包括以下内容:

 %.o : %.c makefile $(COMPILE) -c $(CFLAGS) $< -o $(OUTPUT_FOLDER)/$@ $(COMPILE) -MM $(CFLAGS) $< > $(OUTPUT_FOLDER)/$(addsuffix .d, $(notdir $(basename $@))) 

由于它们可以使用cs-make.exe正确构建, cs-make.exe我看不出为什么不应该使用make.exe构建。 那么,怎么了?

谢谢你们的回答。

我花了许多令人沮丧的时间来尝试GCC,OpenOCD,JTag驱动程序和Eclipse插件的不同组合。 我有一个项目的许多构建版本,都可以与我以前的工具链一起使用,并且我尝试将其中的各种版本复制到用于测试新工具链的项目中。

我最终找到了解决方案。 我以某种方式设法破坏了我的项目,以使用一个构建版本中的源文件和另一个版本中的makefile,并且它们之间存在不兼容问题。

症状极具欺骗性,并导致我进入各种盲目的小巷。 我仍然不明白为什么它可以与一个版本的make一起使用,而不能与另一个版本一起使用。

当我纠正该项目时,一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM