gmake와 make의 차이점은 무엇입니까?


127

'gmake'와 'make'의 차이점을 이해하려고합니까?

내 리눅스 박스에서 그들은 동일합니다 :

% gmake --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

% make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

나는 이것이 모든 플랫폼에서 동일하지 않다고 생각하고 있습니까? 다른 것을 사용하는 것이 좋은 이유가 있습니까?
왜 두 이름이 있는지에 대한 역사적 의미가 있습니까?

답변:


166

'gmake'는 특히 GNU make를 나타냅니다. 'make'는 시스템의 기본 make 구현을 나타냅니다. 대부분의 Linux 배포판에서 이것은 GNU make이지만 다른 유닉스에서는 BSD make와 같은 다른 make 구현이나 다양한 상용 unix의 make 구현을 나타낼 수 있습니다.

GNU make가 받아 들인 언어는 전통적인 make 유틸리티가 지원하는 언어의 수퍼 셋입니다.

'gmake'를 사용하면 GNU make 확장 기능을 다른 make 구현으로 잘못 해석 할 염려없이 사용할 수 있습니다.


27
좋은 대답입니다. gcc 및 cc에 대해 동일한 규칙이 적용됩니다.
Tim Hoolihan

고마워요. 이것을 정리해 주셔서 감사합니다.
Nick Haddad

4
gawk와 gtar는 다른 gtools에도 적용됩니다. 예를 들어 gawk와 gtar는 사람들을 솔라리스에서 넘어 뜨리는 도구입니다.
Dan Davies Brackett

2
GNU Make는 언어 확장에 호환되는 기능의 슈퍼 세트를 제공하지 않습니다. 예를 들어 $ ^는 gmake (1)에는 없지만 BSD의 pmake (1)에는 없습니다. 이로 인해 GNU Make와 pmake가 모두 사용할 수있는 Makefile을 작성하려고 할 때 비참한 결과 gcc -o $@ $<가 발생할 수 있습니다. gcc 클로버 링 파일에서).
Sean

2
@Sean 이것은 무엇입니까 $^? 그 이름을 가진 변수는 확실히 GNU 제조사에 존재하며, 지금까지 내가 말할 수있는 기존의 메이크업과 호환됩니다. BSD의 의미가 다른가?
tripleee

10

내 시스템에서 차이는 없습니다 (gmake는 소프트 링크로 만듭니다).

-> ls -l $(which gmake make)
lrwxrwxrwx 1 root root      4 Jun  5  2007 /usr/bin/gmake -> make
-rwxr-xr-x 1 root root 168976 Jul 13  2006 /usr/bin/make

gmake는 GNU make를 나타냅니다. 다른 구현 구현이 있습니다. Linux 시스템에서 GNU의 의지와 사용자의 삶을보다 유연하게 만드는 것은 gmake와 소프트 링크되어 있습니다.


2

의 일반적인 "반대" gmake는 BSD make인데, makeBSD 시스템에 있을 것 입니다. 데비안 파생물에서 BSD가 무엇인지 확인하려면으로 사용할 수 있습니다 apt-get install pmake.


3
pmake의심 할 여지없이 BSD는 왜 만들까요? >. <
stackoverflowuser95

기본 make는 BSD 시스템에서의 BSD make입니다.
Mongus Pong

-3

분명히 GNU make는 현재 거의 보편적 이므로 차이가 거의 없습니다.


2
다른 버전의 make를 사용하지 않으면 차이가 있습니다.

8
글쎄 ... 말할 필요가있다. GNU make는 이제 리눅스 시스템에서 거의 보편적이다. BSD가 다른 문법 등을 가진 자체 make를 사용한다고 가정 해 봅시다.
Alex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.