2009-07-28 116 views
93

我想了解'gmake'和'make'之间的区别?gmake和make有什么区别?

在我的Linux机器,他们是相同的:

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

我猜测这是不是在所有平台上一样吗? 是否有很好的理由使用其中一个?
为什么这两个名字有一些历史意义?

+4

这不属于serverfault;这是一个关于工具链 – bdonlan 2009-07-28 15:40:17

回答

125

'gmake'特指GNU make。 'make'是指系统默认的make实现;在大多数Linux发行版中,这是GNU make,但是在其他unix中,它可以指代make的某些其他实现,例如BSD make或各种商业unix的make实现。

GNU make接受的语言是传统make实用程序支持的语言的超集。

通过特别使用'gmake',您可以使用GNU make扩展,而不用担心它们被某些其他make实现所误解。

+16

好问题的问题。请注意,gcc和cc的相同惯例如下 – 2009-07-28 15:43:54

+0

谢谢你们,这很有道理!感谢您解决这个问题。 – 2009-07-28 15:47:03

+4

它也适用于其他gtools:例如,gawk和gtar是在Solaris上启动人员的工具。 – 2009-07-28 19:25:05

2

gmake的通常“相反”是BSD make,这在BSD系统上倾向于为make,这并不令人惊讶。如果你想看看BSD制造的是什么样子的话,在Debian衍生产品上它可以用apt-get install pmake

9

在我的系统没有区别(使用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挂钩。