Gmake ve make arasındaki fark nedir?


127

'Gmake' ve 'make' arasındaki farkı anlamaya çalışıyorum?

Linux kutumda aynılar:

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

Bunun tüm platformlarda aynı olmadığını tahmin ediyorum? Birini diğerinin üzerinde kullanmak için iyi bir neden var mı?
İki ismin neden olduğuna dair bazı tarihsel önemi var mı?

Yanıtlar:


166

'gmake' özellikle GNU make'i ifade eder. 'make' sistemin varsayılan make uygulamasını ifade eder; Çoğu Linux dağıtımında bu GNU make'dir, ancak diğer unixlerde BSD make veya çeşitli ticari unixlerin make uygulamaları gibi diğer bazı make uygulamalarına atıfta bulunabilir.

GNU make tarafından kabul edilen dil, geleneksel make yardımcı programı tarafından desteklenenin bir üst kümesidir.

Özellikle 'gmake' kullanarak, başka bir make uygulaması tarafından yanlış yorumlanmaları konusunda endişelenmeden GNU make eklentilerini kullanabilirsiniz.


27
iyi cevap. aynı konvansiyonun gcc ve cc için de geçerli olduğuna dikkat edin
Tim Hoolihan

Teşekkürler çocuklar, bu mantıklı! Netleştirdiğiniz için teşekkürler.
Nick Haddad

4
Aynı zamanda diğer gtools için de geçerlidir: örneğin gawk ve gtar, insanları Solaris'e sürükleyenlerdir.
Dan Davies Brackett

2
GNU Make, dil uzantılarında uyumlu bir özellik üst kümesi sunmaz. $ ^, örneğin gmake (1) 'de yok ama BSD'sinde pmake (1) var. Bu, hem GNU Make hem de pmake tarafından kullanılabilecek bir Makefile yazmaya çalışırken feci sonuçlara yol açabilir (zararsız bir örnek, hayal edin: gcc -o $@ $<= gmake ile girdi kaynağı yok çünkü $ <boş bir dizge olarak değerlendirilir. Daha kötü kombinasyonlar ortaya çıkabilir. gcc bozma dosyalarında).
Sean

2
@Sean Bu ne hakkında $^? Bu isimde bir değişken kesinlikle GNU Make'de mevcuttur ve anlayabildiğim kadarıyla eski Make ile uyumludur. BSD'deki anlambilim farklı mıdır?
üçlü

10

Benim sistemimde fark yok (gmake yapmak için yumuşak bağlantı):

-> 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'in kısaltmasıdır. Farklı make uygulamaları var. Linux makinesinde, büyük olasılıkla GNU ile irade yapmak ve kullanıcının hayatını daha iyi hale getirmek için gmake ile yumuşak bağlantılıdır.


2

Olağan "zıt" gmakeBSD olduğunu makeolma eğiliminde olacaktır, maketahmin edileceği üzere, BSD sistemlerde. BSD'nin yapımının neye benzediğini görmek istiyorsanız, Debian türevlerinde apt-get install pmake.


3
Neden pmakeşaşırtıcı olmayan bir şekilde BSD üretiliyor? >. <
stackoverflowuser95

Varsayılan marka, şaşırtıcı olmayan bir şekilde BSD sistemlerinde BSD yapımıdır.
Mongus Pong

-3

Görünüşe göre, GNU make pratikte evrenseldir , bu yüzden neredeyse hiçbir zaman bir fark olmamalıdır.


2
Farklı bir make sürümü kullanılmadıkça, bu durumda bir fark olması gerekir.

8
Şey ... söylemelisiniz - GNU make artık LINUX sistemlerinde pratik olarak evrenseldir. BSD'nin farklı sözdizimine sahip kendi markasını kullandığını
Alex
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.