GNU make error code(e = -1)

时间:2017-09-04 23:53:53

标签: makefile gnu-make

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

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

为了尝试更深入地了解问题,我使用make -n仅使用echo输出运行代码。它打印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工具链手动编译和链接,就像前面的情况一样。

1 个答案:

答案 0 :(得分:1)

好。

事实证明这与Git bash(我正在使用的终端)有关。在某个地方,不知何故,我认为其中一个路径变量搞砸了。我完全卸载了Git,然后重新安装,现在工作正常。不确定这是怎么发生的,但我很高兴能解决这个问题。

如果其他人有解释,或者可以为问题添加更多信息以及如何避免这些问题,请随时在下面发帖。