为什么 GNU 使进程挂起?



TL;博士:

在全新 Windows 10 安装中,我安装了 ARM DS-5 v5.26.2 开发工具。我正在使用它的make.exe来构建我们的项目,无论是从Cygwin命令行还是从Eclipse IDE的构建设置。

我们的生成文件包含以下行:

uname_result := $(shell uname -s)

但是每当make到达这条线时,它就会卡住。这发生在 bash 终端以及 Windows 的命令提示符上。

更新 3:

经过更多的故障排除,问题似乎出在DS-5的make实用程序本身。我在 Cygwin 安装中添加了make,并改用了那个,现在我的构建运行正常。

现在的问题是为什么ARM的版本在我的Win 10机器上不起作用,它曾经在Win 7上运行良好。


长版本:

我刚刚在我的工作PC上完成了Windows 10的全新安装,在那台PC上使用Windows 7两年之后。在过去的两天里,我正在经历重新安装我们的工具并恢复体形的过程。不幸的是,我现在被困在让我头痛make

我们使用ARM的DS-5工具集开发嵌入式固件。该项目是一个 Makefile 项目,所以我们不使用内置的 Eclipse 构建器。为了在 Eclipse 环境之外构建项目,我安装了Cygwin以获得方便的bashCLI。makeclang都是DS-5安装的一部分。

当我在项目的Makefile表单 CLI 上运行make时,执行会无限期地卡住。

[...在问题揭示过程之后删除一个长篇故事......]

追查问题的根源后,我发现问题出在这条线上:

uname_result := $(shell uname -s 2>NUL)

为了简化它,我验证了问题出在shell命令本身。我用以下命令做了一个非常简单Makefile,该命令也卡住了:

uname_result := $(shell ls)

当使用make -d处理 makefile 时,当它到达该行时,我得到以下内容:

CreateProcess(C:cygwin64binls.exe,ls,...)
Main thread handle = 000000000000009C

为什么make无法执行shell命令?这个完全相同的脚本在迁移之前曾经工作得很好。

更新 1 带更多信息:

我的系统上只有一个make.exe,放置在C:DS-5_v5.26.2bin.

我创建了一个简化的生成文件,Makefile.tmp

.PHONY: help
help:
echo ====================== TESTING ======================
uname_result := $(shell ls)

我处理来自 Cygwin 的 bash CLI 的这个生成文件:

$ /cygdrive/c/DS-5_v5.26.2/bin/make -d -f Makefile.tmp help

我得到了大量的诊断作为回报:

GNU Make 4.1
Built for Windows32
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
find_and_set_shell() path search set default_shell = C:/cygwin64/bin/sh.exe
Reading makefiles...
Reading makefile 'Makefile.tmp'...
Updating makefiles....
Considering target file 'Makefile.tmp'.
Looking for an implicit rule for 'Makefile.tmp'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.o'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.c'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.cc'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.C'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.cpp'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.p'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.f'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.F'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.m'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.r'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.s'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.S'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.mod'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.sh'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp,v'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'RCS/Makefile.tmp,v'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'RCS/Makefile.tmp'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 's.Makefile.tmp'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.o'.
Looking for a rule with intermediate file 'Makefile.tmp.o'.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.c'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.cc'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.C'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.cpp'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.p'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.f'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.F'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.m'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.r'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.s'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.S'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.mod'.
Trying pattern rule with stem 'Makefile.tmp.o'.
Trying implicit prerequisite 'Makefile.tmp.o,v'.
Trying pattern rule with stem 'Makefile.tmp.o'.
Trying implicit prerequisite 'RCS/Makefile.tmp.o,v'.
Trying pattern rule with stem 'Makefile.tmp.o'.
Trying implicit prerequisite 'RCS/Makefile.tmp.o'.
Trying pattern rule with stem 'Makefile.tmp.o'.
Trying implicit prerequisite 's.Makefile.tmp.o'.
Trying pattern rule with stem 'Makefile.tmp.o'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.o'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.c'.
Looking for a rule with intermediate file 'Makefile.tmp.c'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.y'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.l'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.w'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.w'.
Trying pattern rule with stem 'Makefile.tmp.c'.
Trying implicit prerequisite 'Makefile.tmp.c,v'.
Trying pattern rule with stem 'Makefile.tmp.c'.
Trying implicit prerequisite 'RCS/Makefile.tmp.c,v'.
Trying pattern rule with stem 'Makefile.tmp.c'.
Trying implicit prerequisite 'RCS/Makefile.tmp.c'.
Trying pattern rule with stem 'Makefile.tmp.c'.
Trying implicit prerequisite 's.Makefile.tmp.c'.
Trying pattern rule with stem 'Makefile.tmp.c'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.c'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.y'.
Looking for a rule with intermediate file 'Makefile.tmp.y'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.y'.
Trying implicit prerequisite 'Makefile.tmp.y,v'.
Trying pattern rule with stem 'Makefile.tmp.y'.
Trying implicit prerequisite 'RCS/Makefile.tmp.y,v'.
Trying pattern rule with stem 'Makefile.tmp.y'.
Trying implicit prerequisite 'RCS/Makefile.tmp.y'.
Trying pattern rule with stem 'Makefile.tmp.y'.
Trying implicit prerequisite 's.Makefile.tmp.y'.
Trying pattern rule with stem 'Makefile.tmp.y'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.y'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.l'.
Looking for a rule with intermediate file 'Makefile.tmp.l'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.l'.
Trying implicit prerequisite 'Makefile.tmp.l,v'.
Trying pattern rule with stem 'Makefile.tmp.l'.
Trying implicit prerequisite 'RCS/Makefile.tmp.l,v'.
Trying pattern rule with stem 'Makefile.tmp.l'.
Trying implicit prerequisite 'RCS/Makefile.tmp.l'.
Trying pattern rule with stem 'Makefile.tmp.l'.
Trying implicit prerequisite 's.Makefile.tmp.l'.
Trying pattern rule with stem 'Makefile.tmp.l'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.l'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.w'.
Looking for a rule with intermediate file 'Makefile.tmp.w'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.w'.
Trying implicit prerequisite 'Makefile.tmp.w,v'.
Trying pattern rule with stem 'Makefile.tmp.w'.
Trying implicit prerequisite 'RCS/Makefile.tmp.w,v'.
Trying pattern rule with stem 'Makefile.tmp.w'.
Trying implicit prerequisite 'RCS/Makefile.tmp.w'.
Trying pattern rule with stem 'Makefile.tmp.w'.
Trying implicit prerequisite 's.Makefile.tmp.w'.
Trying pattern rule with stem 'Makefile.tmp.w'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.w'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.w'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.cc'.
Looking for a rule with intermediate file 'Makefile.tmp.cc'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.cc'.
Trying implicit prerequisite 'Makefile.tmp.cc,v'.
Trying pattern rule with stem 'Makefile.tmp.cc'.
Trying implicit prerequisite 'RCS/Makefile.tmp.cc,v'.
Trying pattern rule with stem 'Makefile.tmp.cc'.
Trying implicit prerequisite 'RCS/Makefile.tmp.cc'.
Trying pattern rule with stem 'Makefile.tmp.cc'.
Trying implicit prerequisite 's.Makefile.tmp.cc'.
Trying pattern rule with stem 'Makefile.tmp.cc'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.cc'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.C'.
Looking for a rule with intermediate file 'Makefile.tmp.C'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.C'.
Trying implicit prerequisite 'Makefile.tmp.C,v'.
Trying pattern rule with stem 'Makefile.tmp.C'.
Trying implicit prerequisite 'RCS/Makefile.tmp.C,v'.
Trying pattern rule with stem 'Makefile.tmp.C'.
Trying implicit prerequisite 'RCS/Makefile.tmp.C'.
Trying pattern rule with stem 'Makefile.tmp.C'.
Trying implicit prerequisite 's.Makefile.tmp.C'.
Trying pattern rule with stem 'Makefile.tmp.C'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.C'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.cpp'.
Looking for a rule with intermediate file 'Makefile.tmp.cpp'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.cpp'.
Trying implicit prerequisite 'Makefile.tmp.cpp,v'.
Trying pattern rule with stem 'Makefile.tmp.cpp'.
Trying implicit prerequisite 'RCS/Makefile.tmp.cpp,v'.
Trying pattern rule with stem 'Makefile.tmp.cpp'.
Trying implicit prerequisite 'RCS/Makefile.tmp.cpp'.
Trying pattern rule with stem 'Makefile.tmp.cpp'.
Trying implicit prerequisite 's.Makefile.tmp.cpp'.
Trying pattern rule with stem 'Makefile.tmp.cpp'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.cpp'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.p'.
Looking for a rule with intermediate file 'Makefile.tmp.p'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.web'.
Trying pattern rule with stem 'Makefile.tmp.p'.
Trying implicit prerequisite 'Makefile.tmp.p,v'.
Trying pattern rule with stem 'Makefile.tmp.p'.
Trying implicit prerequisite 'RCS/Makefile.tmp.p,v'.
Trying pattern rule with stem 'Makefile.tmp.p'.
Trying implicit prerequisite 'RCS/Makefile.tmp.p'.
Trying pattern rule with stem 'Makefile.tmp.p'.
Trying implicit prerequisite 's.Makefile.tmp.p'.
Trying pattern rule with stem 'Makefile.tmp.p'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.p'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.web'.
Looking for a rule with intermediate file 'Makefile.tmp.web'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.web'.
Trying implicit prerequisite 'Makefile.tmp.web,v'.
Trying pattern rule with stem 'Makefile.tmp.web'.
Trying implicit prerequisite 'RCS/Makefile.tmp.web,v'.
Trying pattern rule with stem 'Makefile.tmp.web'.
Trying implicit prerequisite 'RCS/Makefile.tmp.web'.
Trying pattern rule with stem 'Makefile.tmp.web'.
Trying implicit prerequisite 's.Makefile.tmp.web'.
Trying pattern rule with stem 'Makefile.tmp.web'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.web'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.f'.
Looking for a rule with intermediate file 'Makefile.tmp.f'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.F'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.r'.
Trying pattern rule with stem 'Makefile.tmp.f'.
Trying implicit prerequisite 'Makefile.tmp.f,v'.
Trying pattern rule with stem 'Makefile.tmp.f'.
Trying implicit prerequisite 'RCS/Makefile.tmp.f,v'.
Trying pattern rule with stem 'Makefile.tmp.f'.
Trying implicit prerequisite 'RCS/Makefile.tmp.f'.
Trying pattern rule with stem 'Makefile.tmp.f'.
Trying implicit prerequisite 's.Makefile.tmp.f'.
Trying pattern rule with stem 'Makefile.tmp.f'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.f'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.F'.
Looking for a rule with intermediate file 'Makefile.tmp.F'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.F'.
Trying implicit prerequisite 'Makefile.tmp.F,v'.
Trying pattern rule with stem 'Makefile.tmp.F'.
Trying implicit prerequisite 'RCS/Makefile.tmp.F,v'.
Trying pattern rule with stem 'Makefile.tmp.F'.
Trying implicit prerequisite 'RCS/Makefile.tmp.F'.
Trying pattern rule with stem 'Makefile.tmp.F'.
Trying implicit prerequisite 's.Makefile.tmp.F'.
Trying pattern rule with stem 'Makefile.tmp.F'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.F'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.r'.
Looking for a rule with intermediate file 'Makefile.tmp.r'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.l'.
Trying pattern rule with stem 'Makefile.tmp.r'.
Trying implicit prerequisite 'Makefile.tmp.r,v'.
Trying pattern rule with stem 'Makefile.tmp.r'.
Trying implicit prerequisite 'RCS/Makefile.tmp.r,v'.
Trying pattern rule with stem 'Makefile.tmp.r'.
Trying implicit prerequisite 'RCS/Makefile.tmp.r'.
Trying pattern rule with stem 'Makefile.tmp.r'.
Trying implicit prerequisite 's.Makefile.tmp.r'.
Trying pattern rule with stem 'Makefile.tmp.r'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.r'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.F'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.m'.
Looking for a rule with intermediate file 'Makefile.tmp.m'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.ym'.
Trying pattern rule with stem 'Makefile.tmp.m'.
Trying implicit prerequisite 'Makefile.tmp.m,v'.
Trying pattern rule with stem 'Makefile.tmp.m'.
Trying implicit prerequisite 'RCS/Makefile.tmp.m,v'.
Trying pattern rule with stem 'Makefile.tmp.m'.
Trying implicit prerequisite 'RCS/Makefile.tmp.m'.
Trying pattern rule with stem 'Makefile.tmp.m'.
Trying implicit prerequisite 's.Makefile.tmp.m'.
Trying pattern rule with stem 'Makefile.tmp.m'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.m'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.ym'.
Looking for a rule with intermediate file 'Makefile.tmp.ym'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.ym'.
Trying implicit prerequisite 'Makefile.tmp.ym,v'.
Trying pattern rule with stem 'Makefile.tmp.ym'.
Trying implicit prerequisite 'RCS/Makefile.tmp.ym,v'.
Trying pattern rule with stem 'Makefile.tmp.ym'.
Trying implicit prerequisite 'RCS/Makefile.tmp.ym'.
Trying pattern rule with stem 'Makefile.tmp.ym'.
Trying implicit prerequisite 's.Makefile.tmp.ym'.
Trying pattern rule with stem 'Makefile.tmp.ym'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.ym'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.r'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.s'.
Looking for a rule with intermediate file 'Makefile.tmp.s'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.S'.
Trying pattern rule with stem 'Makefile.tmp.s'.
Trying implicit prerequisite 'Makefile.tmp.s,v'.
Trying pattern rule with stem 'Makefile.tmp.s'.
Trying implicit prerequisite 'RCS/Makefile.tmp.s,v'.
Trying pattern rule with stem 'Makefile.tmp.s'.
Trying implicit prerequisite 'RCS/Makefile.tmp.s'.
Trying pattern rule with stem 'Makefile.tmp.s'.
Trying implicit prerequisite 's.Makefile.tmp.s'.
Trying pattern rule with stem 'Makefile.tmp.s'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.s'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.S'.
Looking for a rule with intermediate file 'Makefile.tmp.S'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.S'.
Trying implicit prerequisite 'Makefile.tmp.S,v'.
Trying pattern rule with stem 'Makefile.tmp.S'.
Trying implicit prerequisite 'RCS/Makefile.tmp.S,v'.
Trying pattern rule with stem 'Makefile.tmp.S'.
Trying implicit prerequisite 'RCS/Makefile.tmp.S'.
Trying pattern rule with stem 'Makefile.tmp.S'.
Trying implicit prerequisite 's.Makefile.tmp.S'.
Trying pattern rule with stem 'Makefile.tmp.S'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.S'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.S'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.mod'.
Looking for a rule with intermediate file 'Makefile.tmp.mod'.
Avoiding implicit rule recursion.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.mod'.
Trying implicit prerequisite 'Makefile.tmp.mod,v'.
Trying pattern rule with stem 'Makefile.tmp.mod'.
Trying implicit prerequisite 'RCS/Makefile.tmp.mod,v'.
Trying pattern rule with stem 'Makefile.tmp.mod'.
Trying implicit prerequisite 'RCS/Makefile.tmp.mod'.
Trying pattern rule with stem 'Makefile.tmp.mod'.
Trying implicit prerequisite 's.Makefile.tmp.mod'.
Trying pattern rule with stem 'Makefile.tmp.mod'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.mod'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.c'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.cc'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.C'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.cpp'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.p'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.f'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.F'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.m'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.r'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.s'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.S'.
Trying pattern rule with stem 'Makefile.tmp'.
Rejecting impossible implicit prerequisite 'Makefile.tmp.mod'.
Trying pattern rule with stem 'Makefile.tmp'.
Trying implicit prerequisite 'Makefile.tmp.sh'.
Looking for a rule with intermediate file 'Makefile.tmp.sh'.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'Makefile.tmp.sh'.
Trying implicit prerequisite 'Makefile.tmp.sh,v'.
Trying pattern rule with stem 'Makefile.tmp.sh'.
Trying implicit prerequisite 'RCS/Makefile.tmp.sh,v'.
Trying pattern rule with stem 'Makefile.tmp.sh'.
Trying implicit prerequisite 'RCS/Makefile.tmp.sh'.
Trying pattern rule with stem 'Makefile.tmp.sh'.
Trying implicit prerequisite 's.Makefile.tmp.sh'.
Trying pattern rule with stem 'Makefile.tmp.sh'.
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.sh'.
No implicit rule found for 'Makefile.tmp'.
Finished prerequisites of target file 'Makefile.tmp'.
No need to remake target 'Makefile.tmp'.
Updating goal targets....
Considering target file 'help'.
File 'help' does not exist.
Finished prerequisites of target file 'help'.
Must remake target 'help'.
CreateProcess(C:cygwin64binls.exe,ls,...)
Main thread handle = 000000000000008C

但重要的可能是第一部分和最后一部分:

GNU Make 4.1
Built for Windows32
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
find_and_set_shell() path search set default_shell = C:/cygwin64/bin/sh.exe
Reading makefiles...
Reading makefile 'Makefile.tmp'...
Updating makefiles....
Considering target file 'Makefile.tmp'.
Looking for an implicit rule for 'Makefile.tmp'.
Trying pattern rule with stem 'Makefile.tmp'.
. . . . 
. . . . 
Trying implicit prerequisite 'SCCS/s.Makefile.tmp.sh'.
No implicit rule found for 'Makefile.tmp'.
Finished prerequisites of target file 'Makefile.tmp'.
No need to remake target 'Makefile.tmp'.
Updating goal targets....
Considering target file 'help'.
File 'help' does not exist.
Finished prerequisites of target file 'help'.
Must remake target 'help'.
CreateProcess(C:cygwin64binls.exe,ls,...)
Main thread handle = 000000000000008C

因此,如您所见,它既不执行echo命令,也不执行ls命令。如果我注释掉shell命令,我会看到TESTING消息回显到终端。

显然,DS-5的make.exe是为Windows构建的。从Cygwin bash调用它应该有问题吗?如果是这样,为什么这在 Win 7 机器上运行良好?

更新 2 带更多信息:

我重复了测试,这次是从Windows的CMD提示符运行的。我将 bshell行中的ls命令替换为dir命令。令人惊讶的是,同样的行为也发生在CMD身上!

所以,显然,问题出在makeshell函数调用上。

与 ARM 支持联系后,我得到了以下回复:

With regards to the problem you are seeing this is a known issue with GNU 
make version 4.1 supplied by ARM with DS5.  This version of make was shipped 
with DS5 versions 5.23 to 5.26. DS5-5.22 used make 3.81, and DS5-5.27 and 
later have used make 4.2 - neither of which suffer from this defect.
There are three possible workarounds in your case:
1 - Avoid using the "shell" command in your make script - this is probably 
not ideal!
2 - Upgrade your DS-5 version to 5.27 or later - this may or may not be an 
option for you.
3 - Download[*] a different version of GNU make and use it in place of the 
version 3.81 that was supplied with your current version of DS-5.
[*] - Although make is freely available under GPL, unfortunately there are 
legal implications involved with its redistribution which is why I can't 
simply email you an alternative version of make.

感谢 ARM 支持的 Alex

最新更新