चाहे आप Ubuntu, Debian या Red Hat के साथ काम कर रहे हों, आपको एक त्रुटि दिखाई दे सकती है जो पढ़ती है "make: *** No targets specified and no makefile found. Stop." चूंकि यह GNU Make से संबंधित एक सामान्य मुद्दा है, आप इसे अनगिनत Unix कार्यान्वयन पर देख सकते हैं। इसका मतलब है कि आपके वर्तमान कार्य डायरेक्टरी में makefile या Makefile नामक कोई फ़ाइल नहीं है। सौभाग्य से, यह ठीक करने के लिए एक आसान त्रुटि है।
विधि 1: वर्तमान डायरेक्टरी में Makefile ढूंढना
आप वर्तमान डायरेक्टरी में make कमांड को एक बार और चलाने का प्रयास करना चाह सकते हैं यह देखने के लिए कि क्या वही त्रुटि आप पर फेंकी जाती है। यह विशेष रूप से महत्वपूर्ण है यदि आपने एक नई टर्मिनल विंडो खोली है और पहले से ही सही डायरेक्टरी का पता लगाने की कोशिश की है या यदि आपने पिछली बार GNU make चलाने का प्रयास करने के बाद से cd कमांड का उपयोग किया है।
यह मानते हुए कि यह करता है, यह देखने के लिए ls या dir कमांड चलाने का प्रयास करें कि आपकी वर्तमान डायरेक्टरी में कौन सी फ़ाइलें हैं। आप डायरेक्टरी ट्री के सही हिस्से में नहीं हो सकते। यदि आप देखते हैं कि आप अपने रूट / डायरेक्टरी या अपने होम ~ डायरेक्टरी से संबंधित डायरेक्टरी देखते हैं, तो आप सही जगह पर खुद को स्थिति में लाने के लिए make कमांड चलाने के लिए cd कमांड चलाना चाहेंगे।
एक मौका है कि आप खुद को अपेक्षित जगह से और भी दूर पा सकते हैं। हमारे उदाहरण में, हमने /var/crash डायरेक्टरी से make चलाने का प्रयास किया और पाया कि यह बिल्कुल भी काम नहीं करता। यह यहां से चलाने की उम्मीद नहीं की जा सकती, क्योंकि इस विशेष स्थान में केवल असंबंधित क्रैश रिपोर्ट से फ़ाइलें हैं।

अधिक संभावना है, आप अपने होम डायरेक्टरी के अंदर स्थित किसी डायरेक्टरी से अपना make कमांड चलाना चाहेंगे। उदाहरण के लिए, यदि आप GNU nano के नवीनतम संस्करण को स्रोत से बना रहे थे तो आपके पास शायद ~/nano-2.9.6 पर स्थित एक डायरेक्टरी होगी जिसे आप cd कर सकते हैं और फिर make फिर से चला सकते हैं। make का प्रयास करने से पहले एक बार फिर ls चलाना चाह सकते हैं यह सुनिश्चित करने के लिए कि आपके लिए बिल्ड करने के लिए डायरेक्टरी के भीतर एक मेकफ़ाइल है।
ध्यान रखें कि आपको पहले इंस्टॉलेशन को कॉन्फ़िगर करने की आवश्यकता होगी। configure कमांड GNU कंपाइलर के फलने-फूलने के लिए सही वातावरण बनाता है। यदि आप सही प्रोजेक्ट डायरेक्टरी में भी मेकफ़ाइल नहीं ढूंढ पा रहे हैं, तो इसके अंदर रहते हुए ./configure चलाएं जिसके बाद make कमांड। यदि यह सही ढंग से संकलित होता है, तो आप अपने प्रोजेक्ट को sudo make install के साथ इंस्टॉल कर सकते हैं, लेकिन याद रखें कि आप रूट के रूप में कुछ भी नहीं बनाना चाहते हैं इसलिए आप कभी भी sudo make या इंस्टॉलेशन के बाहर कुछ और नहीं चलाना चाहेंगे।
विधि 2: एक कस्टम Makefile निर्दिष्ट करना
यह मानते हुए कि इसने समस्या ठीक कर दी, आपको कुछ और करने की आवश्यकता नहीं है। हालांकि, दो विशेष उपयोग के मामलों पर विचार करना है यदि पिछली विधि ने आपकी समस्या को ठीक नहीं किया। ये दोनों आपके द्वारा हाथ से कॉन्फ़िगर किए जा रहे प्रोजेक्ट के लिए अपना खुद का मेकफ़ाइल लिखने से संबंधित हैं।
आप -f विकल्प का उपयोग करके एक कस्टम मेकफ़ाइल निर्दिष्ट कर सकते है जिसे मेकफ़ाइल के अलावा किसी और चीज़ कहा जाता है। उदाहरण के लिए, यदि आपके पास makefile.bak नामक एक बैकअप मेकफ़ाइल थी तो आप इसे कमांड लाइन से make -f makefile.bak चलाकर निर्दिष्ट कर सकते हैं। आप makefile.bak को किसी भी फ़ाइल नाम से बदल सकते हैं और यदि आप चाहते थे कि कंपाइलर चलाते समय कस्टम या पुराने मेकफ़ाइल में त्रुटियों को अनदेखा किया जाए तो आप -i विकल्प शामिल कर सकते हैं। यह आमतौर पर अनुशंसित नहीं है, क्योंकि यदि इसमें कुछ गलत है तो आप शायद अपने मेकफ़ाइल को संपादित करना चाहेंगे।
दूसरा बहुत निकट से संबंधित उपयोग का मामला एक ऐसी स्थिति को शामिल करता है जहां केस संवेदनशीलता एक मुद्दा है। निम्नलिखित सभी Unix तरीके से व्यवसाय करने में अलग-अलग फ़ाइलें हैं:
- Makefile
- makefile
- makeFile
- MakeFile
- MakefilE
कस्टम कॉन्फ़िगर किए गए प्रोग्राम अजीब कैपिटलाइज़ेशन वाले मेकफ़ाइल को पहचानने में सक्षम नहीं हो सकते। यदि आपने इसे अपने द्वारा काम किए जा रहे कोडिंग प्रोजेक्ट के लिए हाथ से लिखा है, तो आप शायद इसे makefile का नाम बदलना चाहेंगे, हालांकि आप यह सुनिश्चित करने के लिए -i विकल्प का उपयोग कर सकते हैं कि GNU make इसे ढूंढने में सक्षम है। याद रखें कि यदि आपने सब कुछ सही ढंग से लिखा है, तो आप अभी भी इसे सही वातावरण उत्पन्न करने और इस समस्या को शुरू से ही रोकने के लिए अपने स्वयं के प्रोजेक्ट से ./configure चला सकते हैं।