2013-09-02 1 views
2

Solaris 11.1의 Makefile에서 조건부 할당 연산자를 실행할 때 오류가 발생했습니다. 그러나 우분투에서 같은 Makefile을 실행하면 오류가 발생하지 않습니다.조건부 할당을 사용할 때 Solaris에서의 Makefile 오류

version ?= 6.1 
all: 
    echo $(version) 

참고 : 에코 전에 원래 코드에서 echo 전에 탭이 있습니다. 편집 편의를 위해 여기 네 칸을 사용하십시오. 솔라리스 11.1에서 발생

오류 :

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

그러나, 우분투에 이런 오류가 없습니다.

+0

Solaris는 GNU make를 사용하지 않습니다. makefile이 다른 버전의 make와 호환되어야한다면 GNU make 확장을 사용하지 마십시오. 또는 Solaris에서 GNU make를 설치하고 사용하십시오. –

답변

3

많은 Makefile이 Gnu 특정 기능을 사용하기 때문에 gmake을 사용하는 것이 좋습니다. Solaris make는 약간 다른 구문을 사용하고있을 수 있습니다. Solaris makefile manual을 읽을 수 있습니다. 당신은 그것에 ?= 연산자가 없다는 것을 알게 될 것입니다. 그러므로 당신은 그 오류를 얻고 있습니다.

+0

'make --version'을 게시 할 수 있습니까? 문제가 지속되면 –

+0

Thanks @Sagar, Solaris OS는 make 대신 gmake 유틸리티를 사용합니다. – animesh

+0

'make --version'은 무엇을 제공합니까? –

2

?=은 우분투에서 make의 기본 버전 인 GNU make가 추가 한 기능이지만 Solaris의 경우 gmake 또는 /usr/gnu/bin/make으로 설치됩니다. ?=은 Solaris의 기본 make 명령에서 지원하지 않으며, 이전 릴리스에서는 /usr/ccs/bin/make, Solaris 11 이상에서는 /usr/bin/make으로 설치됩니다.

makefile에서 GNU 확장을 사용해야하는 경우 Solaris make가 아닌 GNU make를 실행해야합니다.