3

我在 Solaris 11.1 的 Makefile 中运行条件赋值运算符时遇到了错误。但是,我在 Ubuntu 中运行相同的 Makefile 时没有遇到任何错误。

version ?= 6.1
all:
    echo $(version)

echo注意:在回显之前,在原始代码中的之前有一个制表符。这里使用四个空格只是为了方便编辑。

在 Solaris 11.1 中遇到错误:

make: Fatal error in reader: Makefile, line 1: Badly formed macro assignment

但是,在 Ubuntu 上没有这样的错误。

4

2 回答 2

4

更好地使用gmake,因为许多 Makefile 使用 Gnu 特定的功能。Solaris make 可能使用稍微不同的语法。您可以阅读Solaris makefile 手册;你会发现里面没有?=运算符。因此,您会收到该错误。

于 2013-09-02T09:10:22.010 回答
3

?=是 GNU make 添加的一个功能,它是 Ubuntu 上 make 的默认版本,但在 Solaris 上安装为gmake/usr/gnu/bin/make. ?=Solaris 上的本机 make 命令不支持,该命令与/usr/ccs/bin/make旧版本一样安装/usr/bin/make在 Solaris 11 及更高版本上。

如果您需要在 makefile 中使用 GNU 扩展,请确保您运行的是 GNU make,而不是 Solaris make。

于 2013-09-02T16:21:50.457 回答