गमेक और मेक में क्या अंतर है?


127

मैं 'गमेक' और 'मेक' के बीच के अंतर को समझने की कोशिश कर रहा हूं?

मेरे लिनक्स बॉक्स पर वे समान हैं:

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

मुझे लगता है कि यह सभी प्लेटफार्मों पर समान नहीं है? क्या एक दूसरे पर उपयोग करने का एक अच्छा कारण है?
क्या कुछ ऐतिहासिक महत्व है कि दो नाम क्यों हैं?

जवाबों:


166

'gmake' विशेष रूप से GNU मेक को संदर्भित करता है। 'मेक' सिस्टम के डिफॉल्ट मेक इंप्लीमेंटेशन को संदर्भित करता है; अधिकांश लिनक्स डिस्ट्रोस पर यह जीएनयू मेक है, लेकिन अन्य यूनिक्स पर, यह मेक के कुछ अन्य कार्यान्वयन का उल्लेख कर सकता है, जैसे कि बीएसडी मेक, या विभिन्न वाणिज्यिक यूनिक्स के कार्यान्वयन।

GNU मेक द्वारा स्वीकृत भाषा पारंपरिक मेक यूटिलिटी द्वारा समर्थित एक का एक सुपरसेट है।

'Gmake' का उपयोग करके आप विशेष रूप से GNU मेक का उपयोग कर सकते हैं, इसके बारे में चिंता किए बिना कि वे किसी और के द्वारा गलत तरीके से लागू किए गए हैं।


27
अच्छा उत्तर। ध्यान दें कि एक ही सम्मेलन gcc और cc के लिए अनुसरण करता है
टिम Hoolihan

धन्यवाद दोस्तों, यह समझ में आता है! इसे साफ़ करने के लिए धन्यवाद।
निक हद्दाद

4
यह अन्य gtools पर भी लागू होता है: gawk और gtar, उदाहरण के लिए, सोलारिस पर लोगों की यात्रा करने वाले हैं।
दान डेविस ब्रैकेट

2
GNU मेक अपने भाषा एक्सटेंशन में सुविधाओं के संगत सुपरसेट को प्रस्तुत नहीं करता है। $ ^, उदाहरण के लिए gmake (1) में मौजूद नहीं है, लेकिन अपने BSD के शामक (1) में है। जब जीएनयू मेक और शामक (आकस्मिक हानिरहित उदाहरण, कल्पना द्वारा उपयोग किया जा सकता है) लिखने का प्रयास करते समय यह विनाशकारी परिणाम पैदा कर सकता है, तो कल्पना करें: gcc -o $@ $<= gmake के साथ कोई इनपुट स्रोत नहीं है क्योंकि $ <एक खाली स्ट्रिंग का मूल्यांकन करता है। इससे अधिक बुरे संयोजन मौजूद हैं। gcc clobbering फ़ाइलों में)।
शॉन

2
@ सीन इसके बारे में क्या है $^? उस नाम के साथ एक चर निश्चित रूप से जीएनयू मेक में मौजूद है, और जहां तक ​​मैं बता सकता हूं कि विरासत मेक के साथ संगत है। बीएसडी में शब्दार्थ क्या अलग हैं?
त्रिगुण

10

मेरे सिस्टम में कोई अंतर नहीं है (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

जीएनयू बनाने के लिए जीएमएम खड़ा है। मेक के विभिन्न कार्यान्वयन हैं। लिनक्स मशीन पर शायद GNU द्वारा और उपयोगकर्ता के जीवन को बेहतर बनाने के लिए इसे gmake से जोड़ा जाता है।


2

सामान्य रूप से "विपरीत" gmakeबीएसडी है make, जो makeकि बीएसडी सिस्टमों पर होता है, बिना सोचे समझे। यदि आप देखना चाहते हैं कि बीएसडी क्या है, तो डेबियन डेरिवेटिव पर यह उपलब्ध है apt-get install pmake


3
आखिर pmakeबीएसडी क्यों बना रही है? > <।
stackoverflowuser95

डिफॉल्ट मेक, बीएसडी सिस्टम पर बीएसडी मेक है।
मोंगस पॉन्ग

-3

जाहिरा तौर पर, GNU मेक अब व्यावहारिक रूप से सार्वभौमिक है , इसलिए लगभग कभी भी अंतर नहीं होना चाहिए।


2
जब तक मेक का एक अलग संस्करण उपयोग नहीं किया जाता है, उस स्थिति में अंतर होना चाहिए।

8
ठीक है ... आपको यह कहना होगा - GNU मेक व्यावहारिक रूप से सार्वभौमिक है अब LINUX सिस्टम पर। कहो बीएसडी अपने स्वयं के मेक का उपयोग कर रहा है जिसमें अलग-अलग वाक्यविन्यास हैं, आदि
एलेक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.