2011-12-09 16 views
31

मैं अपनी सी ++ टेक्स्ट बुक में एक उदाहरण से एक आसन्न सूची का उपयोग करके एक ग्राफ क्लास प्रोग्राम करने की कोशिश कर रहा हूं, और जब मैं इस कमांड का उपयोग करके संकलित करता हूं: कोड: g ++ -o प्रोग प्रोग्राम.पीपी ... मुझे मिलता है निम्नलिखित त्रुटि:संकलन-समय त्रुटि "आर्किटेक्चर x86_64" के लिए अपरिभाषित प्रतीकों का क्या अर्थ है?

Undefined symbols for architecture x86_64: 
    "_main", referenced from: 
     start in crt1.10.6.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

... दुनिया में इसका क्या अर्थ है? यह मेरे कोड के साथ एक मुद्दा हो सकता है, लेकिन मुझे लगता है कि यह उससे भी गहरा हो सकता है, क्योंकि मुझे कई अलग-अलग परियोजनाओं के लिए यह वही प्रतीत होता है कि यह असल में त्रुटिपूर्ण है, जिनमें से कई अलग-अलग तरीकों से हल हो गए थे, और दुर्भाग्य से पूरी तरह से गलती से।

मैंने कहीं पढ़ा है कि यह है कि क्या मैं 32 बिट या 64 बिट पुस्तकालयों का उपयोग कर रहा साथ क्या करना है कि हो सकता है, और टैग -m32 या -m64 इस्तेमाल किया जा करना पड़ सकता है, लेकिन मुझे यकीन है कि नहीं कर रहा हूँ अगर यह लागू होता है यहाँ। दिलचस्प बात यह है कि जब मैं -m64 टैग जोड़ने की कोशिश की मैं एक ही सटीक त्रुटि मिली, लेकिन जब मैं -m32 टैग का उपयोग करने की कोशिश की मैं एक ही त्रुटि मिली, को छोड़कर यह

Undefined symbols for architecture i386: 
    "_main", referenced from: 
     start in crt1.10.6.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

बजाय कहा।

मुख्य रूप से मैं सिर्फ यह जानना चाहता हूं कि दुनिया में क्या त्रुटि कह रही है। मैं संकलन-समय त्रुटियों को डीबग करने के लिए उपयोग किया जाता हूं जो कोड, आदि में एक विशिष्ट पंक्ति देते हैं, लेकिन मैं इससे कुछ भी नहीं समझ सकता। कोई विचार?

यदि यह मदद करता है, तो मैं इंटेल कोर 2 डुओ, (इसलिए 64-बिट) के साथ 2008 के अंत में मैकबुक का उपयोग कर रहा हूं, और मैं ओएस एक्स शेर (10.7.2) चला रहा हूं, जो मुझे लगता है कि नवीनतम संस्करण है । इसके अलावा, मैं जीसीसी संस्करण 4.2.1 का उपयोग कर रहा हूँ।

+0

क्या आपके प्रोजेक्ट में .hpp फ़ाइलें हैं? Http://stackoverflow.com/questions/1757509/precompiled-headers-and-compiling-universal-objects-on-osxq – erturne

+4

क्या आपके प्रोग्राम में मुख्य() फ़ंक्शन है? – springrider

उत्तर

33

जब आप फ़ाइल संकलित करते हैं, तो संकलक लिंकर को आमंत्रित करता है जो निष्पादन योग्य उत्पन्न करने का प्रयास करता है। लेकिन ऐसा इसलिए नहीं हो सकता क्योंकि आपने main नामक फ़ंक्शन प्रदान नहीं किया है, जो वह फ़ंक्शन है जिसे आपका प्रोग्राम लॉन्च होने पर निष्पादित किया जाएगा।

या तो आप लिंकर नहीं चलाना चाहते हैं क्योंकि आप कई फाइलों को अलग से संकलित करना चाहते हैं तो फिर गठबंधन करें। उस स्थिति में, लिंक चरण को छोड़ने के लिए कंपाइलर को बताने के लिए -c ध्वज का उपयोग करें।

या तो आप संकलित फ़ाइल निष्पादित करना चाहते हैं। फिर आपको main फ़ंक्शन को लागू करने की आवश्यकता है।

+2

आप इस-सी ध्वज का उपयोग कहां करेंगे? क्या आप एक उदाहरण दे सकते हैं? – Goldname

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