2009-07-28 15 views
93

Sto cercando di capire la differenza tra "gmake" e "make"?Qual è la differenza tra gmake e make?

sulla mia macchina Linux sono identici:

% 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. 

sto indovinando questo non è la stessa su tutte le piattaforme? C'è un buon motivo per usarne uno sull'altro?
C'è qualche significato storico sul perché ci sono i due nomi?

+4

Questo non appartiene a serverfault; è una domanda sulla toolchain – bdonlan

risposta

125

'gmake' si riferisce specificamente alla marca GNU. 'make' si riferisce all'implementazione make predefinita del sistema; sulla maggior parte delle distribuzioni Linux questo è GNU make, ma su altri Unix potrebbe riferirsi ad alcune altre implementazioni di make, come BSD make, o alle implementazioni make di vari unix commerciali.

Il linguaggio accettato da GNU make è un superset di quello supportato dalla tradizionale utilità di creazione.

Utilizzando 'gmake' in particolare è possibile utilizzare le estensioni di GNU make senza preoccuparsi che vengano interpretate erroneamente da altre implementazioni di make.

+16

buona risposta. nota che la stessa convenzione segue per gcc e cc –

+0

Grazie ragazzi, questo ha senso! Grazie per il chiarimento. –

+4

Si applica anche ad altri gtools: gawk e gtar, ad esempio, sono quelli che fanno scattare la gente su Solaris. –

2

Il solito "opposto" di gmake è BSD make, che tenderà ad essere make su sistemi BSD, non sorprendentemente. Se vuoi vedere come è fatto BSD, su derivati ​​Debian è disponibile come apt-get install pmake.

+3

Perché 'pmake' non sorprende che BSD sia? >. < – stackoverflowuser95

+0

Il make predefinito non sorprende BSD sui sistemi BSD. –

9

Sul mio sistema alcuna differenza (gmake è soft link per fare):

-> 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 acronimo di GNU make. Esistono diverse implementazioni di make. Molto probabilmente la macchina Linux fa la volontà di GNU e per rendere la vita dell'utente più semplice è legata a gmake.

-1

Apparentemente, la marca GNU è practically universal now, quindi non ci dovrebbe quasi mai essere una differenza.

+0

A meno che non venga utilizzata una versione diversa di marca, nel qual caso dovrebbe esserci una differenza. –

+4

Beh ... devi dire - GNU make è praticamente universale ora su sistemi LINUX. Supponiamo che BSD utilizzi la propria marca che ha una sintassi diversa, ecc. – Alex

Problemi correlati