0

TL;博士:

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

我们的 Makefile 包含以下行:

uname_result := $(shell uname -s)

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

更新 3:

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

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


长版:

在我的工作 PC 上使用 Windows 7 两年后,我刚刚在我的工作 PC 上完成了 Windows 10 的全新安装。在过去的两天里,我正在重新安装我们的工具并恢复原状。不幸的是,我现在被困在make让我头疼的问题上。

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

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

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

追查问题根源后,发现问题出在这一行:

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

为了简化它,我验证了问题在于shell命令本身。我使用以下命令做了一个非常简单Makefile的操作,但它也被卡住了:

uname_result := $(shell ls)

当使用 处理生成文件时make -d,当它到达该行时,我得到以下信息:

CreateProcess(C:\cygwin64\bin\ls.exe,ls,...)
Main thread handle = 000000000000009C

为什么不能make执行shell命令?在迁移之前,这个完全相同的脚本曾经运行良好。

更新 1 含更多信息:

我的系统上只有一个make.exe,位于C:\DS-5_v5.26.2\bin.

我创建了一个简化的makefile Makefile.tmp,:

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

我从 Cygwin 的 bash CLI 处理这个 makefile:

$ /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:\cygwin64\bin\ls.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:\cygwin64\bin\ls.exe,ls,...)
Main thread handle = 000000000000008C

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

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

更新 2 含更多信息:

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

因此,显然,问题出在'make函数shell调用上。

4

1 回答 1

1

联系 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 对此的支持。

于 2018-05-03T15:55:05.370 回答