我在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上没有这样的错误。
答案 0 :(得分:3)
最好使用gmake
,因为许多Makefile都使用Gnu特有的功能。 Solaris make可能使用略有不同的语法。你可以阅读Solaris makefile manual;您会发现其中没有?=
运算符。因此,你得到了这个错误。
答案 1 :(得分:2)
?=
是GNU make添加的一个功能,它是Ubuntu上make的默认版本,但在Solaris上安装为gmake
或/usr/gnu/bin/make
。 Solaris上的本机make命令不支持?=
,在Solaris 11及更高版本的旧版本/usr/ccs/bin/make
上安装/usr/bin/make
。
如果您需要在makefile中使用GNU扩展,请确保运行GNU make,而不是Solaris make。