gpt4 book ai didi

GNU Make 版本之间的兼容性

转载 作者:行者123 更新时间:2023-11-30 16:25:07 25 4
gpt4 key购买 nike

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

我一直在使用 CodeSourcery 'cribbed' 的 GCC 版本,但我已从 http://gnutoolchains.com/arm-eabi/ 升级到最新版本。除了 Make 之外,一切都运行良好:

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

我已经修改了我的 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 正确构建,我看不出为什么它们不应该使用 make.exe 构建。那么,到底出了什么问题?

最佳答案

感谢你们的回复。

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

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

这些症状非常具有欺骗性,让我走进了各种死胡同。我仍然不明白为什么它适用于一个版本的 make 而不适用于另一个版本。

当我更正项目时,一切正常。

关于GNU Make 版本之间的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53510467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com