Permissions GNU生成错误126,C:\程序是一个目录

Permissions GNU生成错误126,C:\程序是一个目录,permissions,makefile,gnu-make,Permissions,Makefile,Gnu Make,GNU make给了我一个奇怪的错误消息,我不明白 gao@L8470-130213 ~ $ make echo Test C:\Program: C:\Program: is a directory make: *** [test] Error 126 这就是我对验证的想法: gao@L8470-130213 ~ $ less makefile test: echo Test gao@L8470-130213 ~ $ which make /c/Programx86/Gnu

GNU make给了我一个奇怪的错误消息,我不明白

gao@L8470-130213 ~
$ make
echo Test
C:\Program: C:\Program: is a directory
make: *** [test] Error 126
这就是我对验证的想法:

gao@L8470-130213 ~
$ less makefile
test:
        echo Test

gao@L8470-130213 ~
$ which make
/c/Programx86/GnuWin32/bin/make
gao@L8470-130213 ~
$ /c/Progra~2/GnuWin32/bin/make.exe test
echo Test
C:\Program: C:\Program: is a directory
make: *** [test] Error 126
gao@L8470-130213 ~
$ make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-pc-mingw32
感觉就像其他程序试图在最后运行,其路径包含一些空格。在这种情况下,它可能是什么程序,如何阻止它运行

我已经看到并试图禁用我的防病毒软件,但没有任何帮助。 我还研究了权限,但我不确定
makefile
是否需要执行权限。我似乎无论如何都无法更改它(在windows上的bash中运行。
makefile
在我签入资源管理器时不是只读的):

make
发生了什么,我能做什么?

发生了什么,比如
程序文件
。makefiles通常依赖的大多数实用程序(例如用于执行命令的shell)也不例外

我创建了一个从
程序文件
程序文件
的程序,并在遇到类似情况时使用后者。

尝试运行的不是“其他程序”,而是
echo
命令。Make打印要运行的命令,
echo test
,但您从未看到输出(
test
),这意味着它无法找到echo程序。不幸的是,我不太熟悉在Windows上运行GNU make的变幻莫测之处:有很多不同的选项。一种可能是获得GNU make的更新版本;3.81岁很老了。3.82现在可用,可能更适合您

您在上面添加的关于您的环境的好信息:使用bash;从最初的问题来看,这并不清楚,在Windows上有许多不同的方法。您正在使用make的mingw版本;该版本(据我所知)没有使用bash作为shell来运行命令:它应该与本机Windows环境一起使用,而本机Windows环境当然没有可用的bash。我相信make you have的版本是直接调用命令和/或使用command.com。当然不是像bash那样的unixshell

如果要使用bash,应将
SHELL
make变量设置为bash.exe程序的路径。如果您使用的是Cygwin环境,那么可以使用Cygwin附带的GNU make,它的行为更像传统的make+shell

否则,您需要使用Windows command.com语句编写命令

再说一次,我不使用Windows,所以这主要是道听途说


另外,makefile不需要是可执行的。

尝试运行的不是“其他程序”,而是
echo
命令。Make打印要运行的命令,
echo test
,但您从未看到输出(
test
),这意味着它无法找到
echo
程序。不幸的是,我不太熟悉在Windows上运行GNU make的变幻莫测之处:有很多不同的选项。一种可能是获得GNU make的更新版本;3.81岁很老了。3.82现在可用,可能更适合您。奇怪的是,
echo$PATH
来自同一个bash终端的功能。。。但是我看到当从
makefile
调用时,
echo
不会输出。3.81是我几周前下载并安装GnuWin32时所遵循的。我试试3.82,但我认为你关于回声的理论更有可能。你是对的。不知何故,
echo
直接在bash中工作,而不是通过
make
。Gnuwin32不包括任何
echo.exe
,但如果我在
路径中添加一个有
echo.exe
的位置,则
make
会很高兴。如果你想这样写的话,我很乐意接受你的答案。“Gnuwin32不包括任何
echo.exe
”->这不是真的。我未能正确安装它。我已经有连接(程序和程序x86)。虽然我第一次看到
C:\Program
时也有同样的感觉,但这并不是问题所在。问题是make找不到echo.exe。看看问题下面的评论,还有疯狂科学家的答案。啊。。。然后,您的一个连接名称令人困惑:)我确实认为它试图显示“程序文件”但失败了,但我不知道为什么它会尝试。
gao@L8470-130213 ~
$ ls -l makefile
-rw-r--r--    1 gao      Administ       21 Apr 15 14:53 makefile
gao@L8470-130213 ~
$ chmod +x makefile
gao@L8470-130213 ~
$ ls -l makefile
-rw-r--r--    1 gao      Administ       21 Apr 15 14:53 makefile