2011-04-04 20 views
24

मैं जीसीसी पर एक प्रो * सी फ़ाइल संकलित करने के लिए कोशिश कर रहा हूँ और मैं इस त्रुटि हो रही है:मेकअप: *** [] त्रुटि 1 त्रुटि

:

make: *** [MedLib_x.o] Error 1 

यह आदेश मेकअप द्वारा मुद्रित है

/usr/bin/gcc -g -fPIC -m64 -DSS_64BIT_SERVER -I/home/med/src/common - 
I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/demo 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/public 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/precomp/public 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/xdk/include INCLUDE=/u01/app/oradb11r2/product/11.2.0/dbhome_3/precomp/public -lnapi -ltabs -c MedLib_x.c 

कृपया मेरी मदद करें कि यह त्रुटि क्यों आ रही है? हालांकि ऑब्जेक्ट फ़ाइल भी बनाई गई है।

+0

त्रुटि संदेश से अधिक जानकारी के बिना यह जानना मुश्किल है कि क्या गलत है – fnokke

+0

आपके द्वारा उद्धृत त्रुटि को जीसीसी से एक त्रुटि से पहले किया जाना चाहिए, कृपया इसे भी उद्धृत करें। – DarkDust

+0

उत्तर के लिए धन्यवाद। आपको और अधिक जानकारी की आवश्यकता है, कृपया समझाएं? – QMG

उत्तर

16

जीएनयू से त्रुटि परिशिष्ट बनाएं, क्योंकि आप देखते हैं कि यह त्रुटि नहीं है लेकिन जीसीसी से आने वाली त्रुटि है।

‘[foo] Error NN’ ‘[foo] signal description’ These errors are not really make errors at all. They mean that a program that make invoked as part of a recipe returned a non-0 error code (‘Error NN’), which make interprets as failure, or it exited in some other abnormal fashion (with a signal of some type). See Errors in Recipes. If no *** is attached to the message, then the subprocess failed but the rule in the makefile was prefixed with the - special character, so make ignored the error.

इसलिए समस्या पर हमला करने के लिए, जीसीसी से त्रुटि संदेश आवश्यक है। मेकफ़ाइल में कमांड लाइन पर सीधे आदेश चिपकाएं और देखें कि जीसीसी क्या कहता है। For more details on Make errors click here.

+0

आपके उत्तर के लिए धन्यवाद। मैं त्रुटियों के संबंध में पृष्ठ पर लिखी गई त्रुटि और चीजों को लिंक करने में असमर्थ हूं। – QMG

11

मुझे वही चीज़ मिल गई। "मेक" चलाना और यह सिर्फ इस संदेश के साथ विफल रहता है।

% make 
make: *** [all] Error 1 

यह नियम में एक आदेश के कारण गैर-शून्य निकास स्थिति के साथ समाप्त होता है। जैसे इसके बाद के संस्करण संदेश के साथ

all: 
     @false 
     echo "hello" 

यह विफल हो जाएगा (मुद्रण के बिना "हैलो") के बाद से false बाहर निकलने की स्थिति के साथ समाप्त हो जाता है 1.

मेरे मामले में, मैं होने की कोशिश कर रहा था: कल्पना निम्नलिखित (बेवकूफ) Makefile चालाक और इसे संसाधित करने से पहले फ़ाइल का बैकअप लें (ताकि मैं अपने पिछले एक के साथ नई जेनरेट की गई फ़ाइल की तुलना कर सकूं)। मैं अपने Make नियम यह है कि इस तरह से देखा में एक होने से ऐसा किया:

@[ -e [email protected] ] && mv [email protected] [email protected] 

... साकार नहीं है कि यदि लक्ष्य फ़ाइल मौजूद नहीं है, तो ऊपर निर्माण (mv आदेश चलने के बिना) के साथ बाहर निकल जाएगा बाहर निकलें स्थिति 1, और इस प्रकार उस नियम के बाद के किसी भी आदेश को चलाने में विफल रहा। मेरी दोषपूर्ण रेखा को दोबारा लिखना:

@if [ -e [email protected] ]; then mv [email protected] [email protected]; fi 

मेरी समस्या हल हो गई।

+0

एक और विकल्प '@ [होगा! -ई $ @] || एमवी $ @ $ @।बाक ' – T0xicCode

+0

बिल्कुल! '@ [! -ई $ @] || एमवी $ @ $ @। बाक भी काम करेगा! लेकिन यह मेरे दिमाग को डबल नकारात्मकताओं से परे पढ़ने की कोशिश करने के लिए दर्द देता है, इसलिए मेरे साथी प्रोग्रामर (यानी सबसे अधिक संभावना है कि, भविष्य में एक वर्ष) के लिए विचार से बाहर) मैं इसके बजाय थोड़ा अधिक 'if' कथन का उपयोग करना पसंद करता हूं। – zrajm

0

मेरे मामले में एक स्थिर चर था जिसे प्रारंभ नहीं किया गया था। जब मैंने इसे प्रारंभ किया, तो त्रुटि हटा दी गई। मुझे इसके पीछे तर्क नहीं पता लेकिन मेरे लिए काम किया। मुझे थोड़ा देर हो चुकी है लेकिन इसी तरह की समस्या वाले अन्य लोगों को कुछ मदद मिल सकती है।

3

कभी-कभी आप कई चेतावनियों और उत्पादन का कोई लाइन कि कहते हैं साथ संकलक outputs के बहुत सारे मिल जाएगा "त्रुटि: आप कुछ यहाँ गलत किया" लेकिन वहां अभी भी एक समस्या हुई। इसका एक उदाहरण एक लापता हेडर फ़ाइल है - कंपाइलर कुछ ऐसा नहीं कहता है "ऐसी कोई फ़ाइल नहीं" लेकिन "त्रुटि: ऐसी कोई फ़ाइल नहीं", तो यह कुछ समय बाद गैर-शून्य निकास कोड से बाहर निकलती है (शायद कई और चेतावनियों के बाद)। इन मामलों में एक त्रुटि संदेश के साथ बम विस्फोट होगा!

संबंधित मुद्दे