В чем разница между gmake и make? - программирование
Подтвердить что ты не робот

В чем разница между 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.

Я предполагаю, что это не одно и то же на всех платформах? Есть ли веская причина использовать один над другим?
Есть ли какое-то историческое значение для того, почему существуют два имени?

4b9b3361

Ответ 1

'gmake' относится конкретно к GNU make. "make" означает, что системный дефолт выполняет реализацию; на большинстве дистрибутивов Linux это GNU make, но в других unixes он может ссылаться на некоторую другую реализацию make, такую ​​как BSD make, или на реализацию реализаций различных коммерческих unixes.

Язык, принятый GNU make, является надмножеством, поддерживаемым традиционной утилитой make.

Используя "gmake", вы можете использовать расширения GNU, не беспокоясь о том, что они неверно интерпретируются некоторыми другими реализациями.

Ответ 2

В моей системе нет разницы (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.

Ответ 3

Обычным "противоположным" значением gmake является BSD make, который, как неудивительно, будет стремиться к make для систем BSD. Если вы хотите увидеть, что делает BSD, то в Debian-дериваторах это доступно как apt-get install pmake.