1

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在我签入资源管理器时不是只读的):

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

这是怎么回事make,我该怎么办?

4

2 回答 2

2

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

您在上面添加的有关您的环境的好信息:使用 bash;从最初的问题中并不清楚,在 Windows 上有很多不同的方法来做事。您正在使用 make 的 mingw 版本;该版本(据我了解)不使用 bash 作为在其中运行命令的 shell:它应该与本机 Windows 环境一起使用,这些环境当然没有 bash 可用。我相信您拥有的 make 版本是直接调用命令和/或使用 command.com。当然不是像 bash 这样的 UNIX shell。

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

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

同样,我不使用 Windows,所以这主要是传闻。

PS。makefile 不需要是可执行的。

于 2013-04-15T20:34:12.773 回答
1

发生的事情是make 不喜欢文件名或目录名中带有空格,例如Program Files. makefile 通常依赖的大多数实用程序也没有,例如用于执行命令的 shell。

每当我遇到这样的情况时,我都会创建一个连接from Program Filesto并使用后者。ProgramFiles

于 2013-04-15T17:34:49.930 回答