2009-07-28 15 views
93

Estoy tratando de entender la diferencia entre 'gmake' y 'make'?¿Cuál es la diferencia entre gmake y make?

En mi máquina Linux que son idénticos:

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

que supongo que esto no es el mismo en todas las plataformas? ¿Hay alguna buena razón para usar una sobre la otra?
¿Tiene alguna importancia histórica la razón por la cual hay dos nombres?

+4

Esto no pertenece a serverfault; es una pregunta sobre la cadena de herramientas – bdonlan

Respuesta

125

'gmake' se refiere específicamente a la marca GNU. 'make' se refiere a la implementación de make predeterminada del sistema; en la mayoría de las distribuciones de Linux, esto es GNU make, pero en otros unixes, podría referirse a alguna otra implementación de make, como BSD make, o las implementaciones make de varios unixes comerciales.

El lenguaje aceptado por GNU make es un superconjunto del que admite la utilidad de creación tradicional.

Al usar 'gmake' específicamente, puede usar GNU make extensiones sin preocuparse de que sean malinterpretadas por alguna otra implementación make.

+16

buena respuesta. tenga en cuenta que sigue la misma convención para gcc y cc –

+0

¡Gracias chicos, esto tiene sentido! Gracias por aclarar esto. –

+4

También se aplica a otros gtools: gawk y gtar, por ejemplo, son los que hacen tropezar a las personas en Solaris. –

2

El "opuesto" habitual de gmake es BSD make, que tenderá a ser make en sistemas BSD, como era de esperar. Si desea ver cómo es BSD, en los derivados de Debian está disponible como apt-get install pmake.

+3

¿Por qué 'pmake' no es de sorprender que BSD haga? >. < – stackoverflowuser95

+0

La fabricación predeterminada es, como era de esperar, BSD en los sistemas BSD. –

9

En mi sistema hay diferencia (gmake es enlace blando para hacer):

-> 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 significa GNU make. Hay diferentes implementaciones de make. En la máquina Linux es muy probable que haga la voluntad de GNU y para hacer que la vida del usuario sea más fácil, la marca está vinculada a gmake.

-1

Aparentemente, la marca GNU es practically universal now, por lo que casi nunca debería haber una diferencia.

+0

A menos que se use una versión diferente de make, en cuyo caso debería haber una diferencia. –

+4

Bueno ... debe decir: GNU make es prácticamente universal ahora en sistemas LINUX. Supongamos que BSD está utilizando su propia marca, que tiene una sintaxis diferente, etc. – Alex

Cuestiones relacionadas