Makefile 中出错,无法将 Shell 设置为 /bin/bash (WSL)

Makefile 中出错,无法将 Shell 设置为 /bin/bash (WSL)

我在 WSL Ubuntu 上运行了针对 x86_64-pc-linux-gnu 构建的 make 版本 4.1。我有以下内容生成文件我尝试用它运行 make。但是当我运行它时失败了,并显示错误消息:

make: /bin/bash : Command not found
makefile:18: recipe for target 'cc' failed
make: *** [cc] Error 127

我检查了 /bin/ 文件夹,发现 bash 确实存在,所以我不知道为什么它不起作用。有人能告诉我吗?

答案1

GNUmake正在将 后面的空格解析为SHELL := /bin/bash可执行文件名称的一部分。如GNU make:如何使用变量

您还可以使用它们将受控的前导空格引入变量值。在替换变量引用和函数调用之前,前导空格字符将从输入中丢弃;这意味着您可以通过使用变量引用保护前导空格来将前导空格包含在变量值中,如下所示:

nullstring :=
space := $(nullstring) # end of the line

这里变量值 space 正好是一个空格。这里加上注释 `# end of the line' 只是为了清楚起见。由于变量值中的尾随空格字符不会被删除,因此在行末只加一个空格会产生同样的效果(但阅读起来会比较困难)。如果在变量值末尾加了空格,最好在行末加上这样的注释,以明确您的意图。相反,如果您不想在变量值末尾加任何空格,则必须记住不要在行末的空格后随意加注释,例如:

dir := /foo/bar    # directory to put the frobs in

这里变量 dir 的值为/foo/bar(带有四个尾随空格),这可能不是我们的本意。(想象一下这样 $(dir)/file的定义!)

相关内容