gmakeとmakeの違いは何ですか?


127

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

これはすべてのプラットフォームで同じではないと思いますか?どちらか一方をもう一方を使用する正当な理由はありますか?
2つの名前がある理由に歴史的な意味はありますか?

回答:


166

「gmake」は特にGNU makeを指します。「make」は、システムのデフォルトのmake実装を指します。ほとんどのLinuxディストリビューションではこれはGNU makeですが、他のUNIXでは、BSD makeなどのmakeの他の実装や、さまざまな商用unixのmake実装を指す場合があります。

GNU makeで受け入れられている言語は、従来のmakeユーティリティでサポートされている言語のスーパーセットです。

特に「gmake」を使用することにより、他のmake実装によって誤って解釈されることを心配することなく、GNU make拡張を使用できます。


27
いい答えだ。同じ規則がgccとccにも適用されることに注意してください
Tim Hoolihan '28 / 07/28

みんなありがとう、これは理にかなっています!これを片付けてくれてありがとう。
Nick Haddad、

4
これは他のgtoolsにも適用されます。たとえば、gawkとgtarは、Solarisで人をつまずかせるものです。
Dan Davies Brackett

2
GNU Makeは、その言語拡張で互換性のある機能のスーパーセットを提供していません。$ ^、例えば、gmake(1)には存在しませんが、BSDのpmake(1)には存在します。これは、GNU Makeとpmakeの両方で使用できるMakefileを書き込もうとすると、悲惨な結果につながる可能性があります(無害な例を考えて、想像してみてくださいgcc -o $@ $<。 gcc clobberingファイル)。
Sean

2
@Seanこれは何$^ですか?その名前変数は確かにGNU Makeに存在し、私の知る限り、レガシーMakeと互換性があります。BSD Makeのセマンティクスは異なりますか?
tripleee 2014

10

私のシステムでは違いはありません(gmakeはmakeへのソフトリンクです):

-> 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マシンでは、おそらくmake willはGNUによって作成され、ユーザーの生活をより快適にするために、makeはgmakeにソフトリンクされています。


2

の通常の「反対」gmakeはBSD makeでありmake、当然ながらBSDシステム上にある傾向があります。BSD makeがどのようなものかを見たい場合は、Debian派生物ではとして入手できますapt-get install pmake


3
pmake当然のことながら、BSDはなぜmakeなのですか?>。<
stackoverflowuser95 2013

デフォルトのmakeは当然のことながら、BSDシステムではBSD makeです。
Mongus Pong 2017

-3

どうやら、GNU makeは今や実質的に普遍的であるので、違いはほとんどありません。


2
makeの異なるバージョンが使用されている場合を除き、その場合は違いがあります。

8
まあ...あなたは言う必要があります-GNU makeは今やLINUXシステムでは事実上普遍的です。BSDが、構文などが異なる独自のmakeを使用しているとしましょう
Alex
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.