【发布时间】:2021-03-14 09:00:51
【问题描述】:
我打算在安装了 WSL 的 Windows 上运行 make。
通常,我可以在 CMD 或 Powershell 中运行 wsl date 以在 WSL 中临时运行单个命令,但我无法在 Makefile 中执行相同的操作。
我尝试使用普通的wsl date,它给出了
process_begin: CreateProcess(NLL, wsl date, ...) failed.
make (e=2): The system cannot find the file specified.
我尝试使用 $(wsl) date,它运行 CMD 版本 date,而不是预期的 Linux 版本。
有谁知道使它工作的正确方法?谢谢!
一个最小的例子:
##### Call the WSL to run a command
call-wsl:
C:\Windows\System32\wsl.exe date
运行make call-wsl,它给出了
C:\Windows\System32\wsl.exe date
process_begin: CreateProcess(NULL, C:\Windows\System32\wsl.exe date, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [makefile:3: call-wsl] Error 2
【问题讨论】:
-
我对wsl一无所知。但是使用
$(wsl)是行不通的,因为这只是一个make 变量引用:如果您没有将变量wsl设置为任何值,那么它会像任何make 变量一样扩展为空字符串。wsl是一个程序,例如wsl.bat或wsl.exe或wsl.com?还是其他什么神奇的东西? -
@MadScientist
C:\WINDOWS\system32\wsl.exe -
那个目录在你的路径上吗?如果您在 makefile 中使用完全限定的路径名,它会起作用吗?请显示有问题的最小 makefile、运行的 make 命令以及得到的输出(不仅仅是错误)。
-
是的。
system32是一个典型的位置,默认在 PATH 中。我添加的示例使用了完整路径,但它不起作用。 -
您可以尝试使用正斜杠。如果这不起作用,我不知道。我想知道错误是否不是找不到
wsl,而是找不到date。但我不知道为什么会这样。它似乎是关于 wsl 的特定内容(与 make 相关)。我不知道要让 wsl 工作可能需要什么特殊魔法(如果有的话)。
标签: windows makefile windows-subsystem-for-linux