В чем разница между 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.
Я предполагаю, что это не одно и то же на всех платформах?
Есть ли веская причина использовать один над другим?
Есть ли какое-то историческое значение для того, почему существуют два имени?
Ответы
Ответ 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
.
Ответ 4
По-видимому, GNU make практически универсален сейчас, поэтому почти не должно быть разницы.