GNU make错误代码(e = -1)

3

我有一个奇怪的问题。过去4周,我已经使用GNU make而没有任何问题。我将我的make文件指向一个avr工具链以进行ATMEL处理器的交叉编译。几天前,GNU make停止工作。当我运行 make 时,我会得到以下输出:

    make (e=-1): Error -1
    make: *** [main.o] Error -1

为了更好地了解问题,我仅使用make -n来运行代码以输出回显。它打印了Makefile中的所有语句,包括命令。以下是输出的一小部分片段:
    echo
    echo "=================================="
    echo "Compiling: " main.c
    echo "=================================="
    "/c/Users/Shane Reynolds/Documents/CDU_embeddedSystems/CDUEmbeddedToolbox/avr_tools/bin/avr-gcc" -c -std=gnu99 -g -mmcu=atmega1281 -DF_CPU=16000000UL -Wall -Wstrict-prototypes -Os main.c -o main.o

你可以看到该命令在这段短输出的末尾被打印出来。如果我复制并粘贴该命令到终端,那么该进程将正常运行 - 但每次都这样做有点麻烦。为了试图了解 GNU make 失败的原因,我运行了调试标记 make -d 并收到了大量的输出。我认为重要的部分如下所示:
    CreateProcess(C:\Users\Shane Reynolds\Documents\CDU_embeddedSystems\CDUEmbeddedToolbox\avr_tools\utils\bin\echo.exe,echo,...)
    Putting child 0x0043fdf0 (main.o) PID 4486808 on the chain.
    Live child 0x0043fdf0 (main.o) PID 4486808
    Main thread handle = 0x000000a8

    Reaping winning child 0x0043fdf0 PID 4486808
    Live child 0x0043fdf0 (main.o) PID 4488168
    Reaping losing child 0x0043fdf0 PID 4488168
    make (e=-1): Error -1
    make: *** [main.o] Error -1
    Removing child 0x0043fdf0 PID 4488168 from chain.

有人能帮我解决这个问题吗?我已经花了几天时间来尝试解决它。我真的希望这不是什么非常明显或简单的错误。

编辑:为了增加一些背景,我在Windows 8上使用它 - 当我从bash或cmd运行make时,我得到同样的错误消息。我的makefile链接如下:

https://pastebin.com/j7uMSLic

进一步编辑:我创建了一个非常简单的makefile和非常简单的源代码 - 运行这个会产生相同的错误,但我可以像前一个案例一样手动使用AVR工具链进行编译和链接。


你能不能百分之百确定这不是你代码编译错误?虽然很显然,但有时我们的目光会被引向错误的地方... - John3136
我正在使用AVR工具链进行编译。运行使用avr-gcc命令的代码很好用 - 我可以手动创建.o.elf.hex文件。我也没有问题将程序加载到目标处理器中。据我所知,make只是一个脚本,它指向您想要用于编译的各种工具。 - Shane Reynolds
你是否使用了“-j”选项?如果正在进行并行构建,则make的输出可能会令人困惑... - o11c
1
回滚到之前的工作提交是否仍然存在相同的错误?您的工具链是否在源代码控制下? - Jeff
工具链已经在源代码控制下,尽管这些文件没有被编辑过。如果我手动输入命令调用它们(或者复制并粘贴从运行make -n输出的命令),工具链仍然可以正常工作。此外,我尝试回滚到较早的 makefile 和之前已知可以工作的源代码 main.c,但错误在这两种情况下仍然存在。 - Shane Reynolds
显示剩余2条评论
1个回答

1

好的。

事实证明,问题与我使用的Git bash终端有关。不知何时何地,我认为其中一个路径变量被搞乱了。我完全卸载了Git,然后重新安装,现在它可以正常工作了。不确定这是怎么发生的,但很高兴它已经修复。

如果其他人有解释或者可以增加更多关于问题以及如何避免的见解,请随意在下面发布。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接