¿Cuál es la diferencia entre gmake y make?


Estoy tratando de entender la diferencia entre "gmake' y 'hacer'?

En mi caja linux 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.

Supongo que esto no es lo mismo en todas las plataformas? ¿Hay una buena razón para usar uno sobre el otro?
¿Hay algún significado histórico de por qué existen los dos nombres?

Author: Nick Haddad, 2009-07-28

4 answers

'gmake' se refiere específicamente a GNU make. 'make' se refiere a la implementación 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 soportado por la utilidad tradicional make.

Usando' gmake ' específicamente puedes usar extensiones GNU make sin preocupándose de que sean malinterpretados por alguna otra implementación de make.

 134
Author: bdonlan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-28 19:21:25

En mi sistema no hay diferencia (gmake es enlace suave 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 lo más probable es que make will por GNU y para hacer la vida del usuario makeer make esté ligado a gmake.

 9
Author: dimba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-28 15:40:05

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

 2
Author: chaos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-28 15:40:05

Aparentemente, GNU make es prácticamente universal ahora, por lo que casi nunca debería haber una diferencia.

 -1
Author: Paul Biggar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-02 15:11:29