मुझे 'मेक' त्रुटि कोड की सूची कहां मिल सकती है?


26

मैं फ़ोर्ट्रान में लिखे प्रोग्राम को संकलित करने का प्रयास कर makeरहा हूं (मेरे पास मेकफाइल है और, जबकि मेकफाइल युक्त निर्देशिका में , मैं कमांड टाइप करता हूं $ make target, जहां "लक्ष्य" एक सिस्टम-विशिष्ट लक्ष्य विनिर्देश है जो मेरे मेकफाइल में मौजूद है । मेरे लक्ष्य विनिर्देश के विभिन्न संशोधनों के साथ प्रयोग करें, मुझे कॉल करने का प्रयास करते समय अक्सर विभिन्न प्रकार के त्रुटि संदेश मिलते हैं make। कुछ उदाहरण देने के लिए।

make[1]: Entering directory
/bin/sh: line 0: test: too many arguments
./dpp   angfrc.f > angfrc.tmp.f
/bin/sh: ./dpp: Permission denied
make[1]: *** [angfrc.o] Error 126
make[1]: Leaving directory
make: *** [cmu60] Error 2

तथा

make[1]: Entering directory
/bin/sh: line 0: test: too many arguments
./dpp -DSTRESS -DMPI -P -D'pointer=integer'-I/opt/mpich_intel/include  angfrc.f > angfrc.tmp.f
/bin/sh: ./dpp: Permission denied
make[1]: *** [angfrc.o] Error 126
make[1]: Leaving directory 
make: *** [mpich-c2] Error 2

तथा

make[1]: Entering directory 
/bin/sh: line 0: test: too many arguments
./dpp -DSTRESS -DMPI -P -D'pointer=integer' -I/opt/mpich_intel/include  angfrc.f > angfrc.tmp.f
/bin/sh: ./dpp: Permission denied
make[1]: *** [angfrc.o] Error 126
make[1]: Leaving directory 
make: *** [mpi-intel] Error 2

क्या आप जानते हैं कि मैं "त्रुटि 126" और "त्रुटि 2" जैसे त्रुटि कोड की सूची कैसे पा सकता हूं? मुझे यह धागा दूसरी वेबसाइट पर मिला है , लेकिन मुझे यकीन नहीं है कि इसका उत्तर क्या है। क्या इसका मतलब है कि makeत्रुटि कोड का कोई प्रणाली-स्वतंत्र अर्थ नहीं है ? क्या आप मेरी मदद कर सकते हैं? धन्यवाद।


opussoftware.com/manual/appendices/B1.htm की एक सूची है ...
विल्फ

जवाबों:


27

त्रुटि कोड मेक से नहीं हैं: मेक कमांड की वापसी स्थिति की रिपोर्ट कर रहा है जो विफल हो गया। प्रत्येक स्थिति मान का अर्थ क्या है, यह जानने के लिए आपको प्रत्येक कमांड के दस्तावेज को देखना होगा। अधिकांश कमांड 0 = सफलता, कुछ और = विफलता के अलावा अन्य भेदों से परेशान नहीं होते हैं।

आपके प्रत्येक उदाहरण में, ./dppनिष्पादित नहीं किया जा सकता है। जब ऐसा होता है, तो शेल जिसने इसे लागू करने की कोशिश की, वह स्थिति कोड 126 (यह मानक व्यवहार है ) के साथ बाहर निकल जाता है । उस शेल को बनाने का उदाहरण शेल एक विफल कमांड (शेल) का पता लगाता है और आपको दिखाते हुए बाहर निकलता है Error 126। मेक ऑफ मेक, मेक-अप के मूल उदाहरण द्वारा निष्पादित कमांड है, और makeउपयोगिता त्रुटि पर 2 रिटर्न करती है, इसलिए पेरेंट रिपोर्ट बनाते हैं Error 2

आपके निर्माण की विफलता से स्टेम करने की संभावना है test: too many arguments। यह मेकफाइल में एक सिंटैक्स त्रुटि हो सकती है, या यह बैश-विशिष्ट सुविधाओं पर निर्भर होने के कारण हो सकता है जब आपके पास /bin/shबैश नहीं है। दौड़ने की कोशिश करो make SHELL=/bin/bash targetया make SHELL=/bin/ksh target; अगर वह काम नहीं करता है, तो आपको अपना मेकफाइल ठीक करना होगा।


14

स्पष्ट करने के लिए, हमेशा तीन त्रुटि कोडों में से एक लौटाएं , जैसा कि gnu.org पर बताया गया है :

  • 0: बाहर निकलने की स्थिति 'सफल' है
  • 2: एनकाउंटर किए गए एरर्स बनाएं
  • 1: -q (प्रश्न) ध्वज की प्रतिक्रिया लौटें, यह दर्शाता है कि लक्ष्य को अपडेट करने की आवश्यकता है

आप ऊपर दिए गए अपने उदाहरणों को चलाकर इसका परीक्षण कर सकते हैं (यह मानते हुए कि आपके पास अभी भी 2011 से है) और फिर echo $?पिछले रिटर्न कोड को प्रिंट करने के लिए टर्मिनल में चल रहे हैं ।

मेक आउट में अन्य त्रुटि कोड का सामना करना पड़ेगा (जैसे कि आपने पाया 126), लेकिन अगर यह एक त्रुटि में चलता है तो यह हमेशा 2 का त्रुटि कोड लौटाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.