Makefile Windows上的GNU Make无法看到某些可执行文件

Makefile Windows上的GNU Make无法看到某些可执行文件,makefile,Makefile,我部署的一部分是在Windows上名为deploy的Makefile上运行一个目标,该文件运行taskkill.exe和psexec.exe等。两者都在c:\windows\system32中,位于%PATH%中 当我试图设定目标时,我收到一条消息,psexec找不到。Taskkill按预期工作 作为测试,我试图简单地将c:\windows\system32\psexec.exe定向,但从makefile中,我得到一个找不到的文件。但是,在同一个shell中,我可以运行相同的dir命令并得到肯定

我部署的一部分是在Windows上名为deploy的Makefile上运行一个目标,该文件运行taskkill.exe和psexec.exe等。两者都在c:\windows\system32中,位于%PATH%中

当我试图设定目标时,我收到一条消息,psexec找不到。Taskkill按预期工作

作为测试,我试图简单地将c:\windows\system32\psexec.exe定向,但从makefile中,我得到一个找不到的文件。但是,在同一个shell中,我可以运行相同的dir命令并得到肯定的响应

为什么连文件存在都看不到,更不用说运行它了

下面是一个Makefile目标示例:

exetest:
    @echo ------------------------------
    -dir /b c:\Windows\System32\PsExec.exe
    @echo ------------------------------
    -dir /b c:\Windows\System32\taskkill.exe
这就是命令提示符中发生的情况:

C:\Users\Owner\Documents\GitHub>make exetest
------------------------------
dir /b c:\Windows\System32\PsExec.exe
File Not Found
make: [exetest] Error 1 (ignored)
------------------------------
dir /b c:\Windows\System32\taskkill.exe
taskkill.exe

C:\Users\Owner\Documents\GitHub>dir /b c:\Windows\System32\PsExec.exe
PsExec.exe

C:\Users\Owner\Documents\GitHub>dir /b c:\Windows\System32\taskkill.exe
taskkill.exe
我正在运行GNU Make 3.81和Windows 7

我已经尝试过psexec和psexec64-两者的行为相同。

这里的问题是make,而不是psexec或psexec64

所有32位进程都被置于以下状态

每当32位应用程序尝试访问%windir%\System32时,访问将重定向到%windir%\SysWOW64

看起来您使用的是32位make程序。因此,它在%windir%\System32中看不到PsExec.exe。如果使用%windir%\SysWOW64\cmd.exe运行32位shell,则行为相同,在这种情况下,dir/b c:\Windows\System32\PsExec.exe将为您提供一个文件未找到错误


您必须修改%windir%\Sysnative\PsExec.exe的路径。

如果make是32位程序,它在system32中看不到64位可执行文件。你需要使用sysnativeI不知道%windir%\Sysnative是个东西。非常感谢。或者您可以更改为64位make