[英]Injecting sections into GNU ld script; script compatibility between versions of binutils.
[英]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.