使用条件分配时Solaris中的Makefile错误

使用条件分配时Solaris中的Makefile错误,makefile,solaris,Makefile,Solaris,在Solaris 11.1的Makefile中运行条件赋值运算符时遇到错误。但是,在Ubuntu中运行相同的Makefile时,我没有遇到任何错误 version ?= 6.1 all: echo $(version) 注意:在回显之前,原始代码中的echo之前有一个选项卡。在这里使用四个空格只是为了方便编辑 Solaris 11.1中遇到错误: make:reader:Makefile中的致命错误,第1行:格式错误的宏分配 但是,Ubuntu上没有这样的错误。最好使用gmake,因

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

version ?= 6.1
all:
    echo $(version)
注意:在回显之前,原始代码中的
echo
之前有一个选项卡。在这里使用四个空格只是为了方便编辑

Solaris 11.1中遇到错误:

make:reader:Makefile中的致命错误,第1行:格式错误的宏分配

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

最好使用
gmake
,因为许多Make文件使用Gnu特有的特性。Solaris make可能使用稍有不同的语法。你可以读这本书;您将发现其中没有
?=
运算符。因此您会遇到这个错误。

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


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

能否发布
make--version
?如果问题仍然存在hanks@Sagar,Solaris操作系统将使用gmake实用程序而不是make。什么是
make--version
giving?make--version抛出一个致命错误,但是gmake--version显示:GNU make-3。82@animesh.. 对不起,我对gmake了解不多。据我所知,gmake是遵循语法的gnumake。您的代码必须使用它。Solaris不使用GNU make。如果makefile必须可移植到make的其他版本,则不要使用gnumake扩展名。或者在Solaris上安装并使用GNU make。