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.

我猜这在所有平台上都不一样吧? 有什么好的理由使用一个而不是另一个吗?
为什么会有这两个名字,有什么历史意义吗?

86956 次浏览

“ gmake”特指 GNU make。‘ make’指的是系统默认的 make 实现; 在大多数 Linux 发行版中,这是 GNU make,但在其他 unixes 中,它可能指的是 make 的其他一些实现,比如 BSD make,或者各种商业 unixes 的 make 实现。

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

通过特别使用‘ gmake’,您可以使用 GNUmake 扩展,而不必担心它们被其他 make 实现误解。

gmake通常的“对立面”是 BSD make,它在 BSD 系统上往往是 make,这并不奇怪。如果你想知道 BSD 是什么样子的,在 Debian 衍生产品上,它是以 apt-get install pmake的形式提供的。

在我的系统上没有区别(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。Make 有不同的实现。在 Linux 机器上最有可能的是由 GNU 制作的遗嘱,并且为了使用户的生活更加易于制作软链接到 gmake。

显然,GNU make 是 现在几乎全世界都知道了,所以几乎没有什么区别。