我有一个奇怪的问题。我以前在过去的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的链接是:
进一步编辑:我用一个非常简单的源代码创建了一个非常简单的makefile - 运行它会产生相同的错误,但我可以使用AVR工具链手动编译和链接,就像前面的情况一样。
答案 0 :(得分:1)
好。
事实证明这与Git bash(我正在使用的终端)有关。在某个地方,不知何故,我认为其中一个路径变量搞砸了。我完全卸载了Git,然后重新安装,现在工作正常。不确定这是怎么发生的,但我很高兴能解决这个问题。
如果其他人有解释,或者可以为问题添加更多信息以及如何避免这些问题,请随时在下面发帖。