2012-07-26 13 views
8

के लिए stdint.h से प्रकारों को नहीं पहचानता है। मेरे पास http://sourceforge.net/projects/gnuarmeclipse से जीएनयू एआरएम सी/सी ++ विकास समर्थन प्लग-इन के साथ स्थापित सी/सी ++ डेवलपर्स के लिए एक्लिप्स जूनो है।ग्रहण एआरएम विंडोज जीसीसी टूलचेन

अपने प्रोजेक्ट में मैं uint_32t तरह प्रकार उपयोग कर रहा हूँ, int16_t और uint8_t से सामान्य रूप से stdint.h से आता है। जबकि मैंने ग्रहण को सीधे मेरे डायलर के मानक शीर्षकों को उस निर्देशिका को इंगित करने के लिए मजबूर किया जहां include निर्देशिका निहित है, उल्लिखित प्रकार हल नहीं किए गए हैं। यह मुझे अनसुलझे प्रतीकों के बारे में बहुत सारे लाल चिह्न देता है और इन प्रकारों के साथ घोषित कार्यों के कोड समापन के साथ कुछ समस्याएं करता है।

एक ही समस्या मानक मैक्रो परिभाषाओं तरह GNUC साथ है - सामान्य रूप से CDT GNU सी या जीएनयू सी ++ के लिए इन देखते हैं, लेकिन toolchain के साथ विंडोज जीसीसी एआरएम यह नहीं है निर्धारित किया है। अजीब।

इसे हल करने के लिए मैं क्या कर सकता हूं और मुख्य बढ़ावा ग्रहण उत्पादकता में देता है?

उत्तर

7

मुझे लगता है कि मुझे अपनी समस्या का समाधान मिला। समस्या सीडीटी जीसीसी बिल्टिन कंपाइलर सेटिंग्स प्रदाता था, जिसने arm-elf-gcc के बजाय gcc चलाने की कोशिश की। मैंने Command to get compiler specs: ¹ को अपने उचित नाम से कंपाइलर को आमंत्रित करने के लिए उपसर्ग जोड़ा।

और voilà, सभी अनसुलझे प्रतीकों गायब हो गए।

दुर्भाग्यवश मैंने टूलचेन्स को बदलकर अपनी परियोजना तोड़ दी (अगर ऐसा नहीं है तो आपके पास जीएनयू एआरएम ग्रहण प्लगइन स्थापित है!) लेकिन यह एक और कहानी है। टैब ProvidersProject Properties > C/C++ General > Preprocessor Include Paths, Macros etc.,;: -


¹ यह किया जा रहा है Share settings entries between projects (global provider) को उस फ़ील्ड को संपादित करने के लिए अक्षम होना होगा।

1

कृपया ध्यान दें कि GNU ARM Eclipse प्लगइन अक्टूबर 2013 में अपडेट किए गए थे, और नए संस्करण में पथ खोज के लिए बेहतर समर्थन है, इसलिए यह समस्या होने की संभावना कम है।

बदलते टूलचेन भी तय किए गए थे।

+0

इसे बेहतर टिप्पणी के रूप में पोस्ट किया जाना चाहिए, जवाब नहीं। –

+1

ठीक है। मेरा पहला प्रयास एक टिप्पणी पोस्ट करना था, लेकिन इसे अस्वीकार कर दिया गया था (पर्याप्त अधिकार नहीं, या ऐसा कुछ नहीं)। – ilg

+0

हाय श्री @ लिविउइन्सक्यू, कृपया इस प्रश्न पर एक नज़र डालें: http://stackoverflow.com/questions/38033130/how-to-use-the-gdb-gnu-debugger-for-microcontroller-debugging मुझे पता है कि आप शायद इस विषय के बारे में गहरे ज्ञान के साथ वहां एकमात्र लोगों में से एक हैं। मदद के लिए बहुत बहुत धन्यवाद। –

1

यदि आप बाहरी मेकफ़ाइल का उपयोग कर रहे हैं, तो एक्लिप्स के पास यह जानने का कोई तरीका नहीं है कि लक्ष्य प्लेटफ़ॉर्म के लिए आपकी मानक लाइब्रेरी कहां स्थित है। समाधान, जो मैंने पाया है, पुस्तकालय को जोड़ने के लिए

Project->Preferences->C++ General->Paths and symbols पर पथ शामिल करना है।

0

मैं इस (इन) प्रसिद्ध समस्या के मेरे संस्करण के लिए एक पूरी तरह से अलग समाधान में आया। मेरे मामले में खोज पथ जहां समस्या नहीं है क्योंकि संकलक ठीक काम कर रहा था। फिर भी, संपादक ने हर जगह अनसुलझा cstdint प्रकारों के बारे में शिकायत की: बहुत परेशान। त्रुटि संदेश स्ट्रिंग का उपयोग कर समाधान के लिए गुगलिंग उपयोगी और बहुत निराशाजनक नहीं थी।

मैं इस समस्या के संयोग से एक जवाब में ("वहाँ अब GXX_EXPERIMENTAL के बिना इस को हल करने के हैक एक नया तरीका है") निम्नलिखित धागा का हल मिल गया:

Eclipse CDT C++11/C++0x support

चीयर्स

1

मैं एक ही मुद्दे और this page से समाधान था मदद की इसे सुलझाने:

  • परियोजना गुण दर्ज करें -> C/C++ -> तैयारी rocessor शामिल पथ, आदि .-> प्रदाता
  • CDT जीसीसी आउटपुट पार्सर निर्माण और करने के लिए (arm-none-eabi-gcc)|([gc]++)|(clang)
  • क्लिक करें (gcc)|([gc]++)|(clang) से संकलक आदेश पैटर्न बदलने CDT पर बटन लागू
  • क्लिक निर्मित संकलक सेटिंग्स क्रॉस एआरएम और की जगह पर
  • क्लिक करें arm-none-eabi-gcc के साथ ${COMMAND}
  • लागू करें बटन पर क्लिक करें।
+0

नहीं, यह हल नहीं किया गया ... :( – sop

+0

ऐसा इसलिए है क्योंकि 'Make {FLAGS} को आपके मेकफ़ाइल से कंपाइलर झंडे पर सेट करने की आवश्यकता है। – vaughan

1

Project > Properties > C/C++ General > Preprocessor Include Paths > Providers में:

  • CDT GCC Built-in Compiler Settings Cross ARM सक्षम करें।

  • सेट Command to get compiler specs रहे हैं:

    arm-none-eabi-g++ ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD "${INPUTS}".C 
    
    • महत्वपूर्ण हिस्सा अंत पर .C है। यह आमतौर पर भाषा के आधार पर सेट किया जाता है। सी कोड के लिए एक छोटा .c का उपयोग किया जाता है, जबकि सी ++ के लिए बड़े सी का उपयोग किया जाता है। लेकिन बाह्य मेकफ़ाइल का उपयोग करते समय या no toolchain विकल्प सेट के साथ निर्दिष्ट कोई भाषा नहीं है।
  • इसके अलावा, आदेश ठीक से चल रहा है और वेरिएबल ठीक से प्रतिस्थापित किया जा रहा है की जाँच करने के Allocate console in the Console View की जाँच करें।

  • CDT GCC Build Output Parser सक्षम करें और (gcc)|([gc]\+\+)|(clang) से (.*g++)|(.*gcc)|(.*[gc]\+\+) पर कंपाइलर कमांड पैटर्न बदलें और फिर परिवर्तन लागू करें। बटनों को CDT GCC Built-in Compiler Settings Cross ARM से ऊपर ले जाने के लिए उपयोग करें।


आप निम्न के लिए Project > Properties > C/C++ General > Preprocessor Include Paths > Entries > CDT User Settings Entries स्थापित करने के लिए की आवश्यकता होगी:

cdt user settings entries

Preferences > String Substitutions में आप अपने toolchain घर की ओर इशारा करते gnu-arm-path के लिए एक वर बनाने की आवश्यकता होगी।

आदर्श रूप से, इन्हें CDT GCC Built-in Compiler Settings Cross ARM में पाया जाना चाहिए, लेकिन मेरे मामले में वे नहीं हैं। मुझे लगता है कि यह इस तथ्य से है कि एक प्रबंधित परियोजना में, ये प्रविष्टियां प्रत्येक भाषा से बंधी हुई हैं। लेकिन बाहरी मेकफ़ाइल के साथ भाषा सूची बॉक्स केवल [Unspecified] कहता है।


The Eclipse स्कैनर प्रदाता प्रणाली डिजाइन करने की चारों ओर CDT कामयाब परियोजनाओं, यह एक छोटे जटिल काम कर रहा है जब आप एक बाहरी makefile प्रयोग कर रहे हैं पाने के लिए कर रही है लगता है।

आप बाहरी मेकफ़ाइल के साथ एक नई प्रबंधित प्रोजेक्ट बना सकते हैं और यह देखने के लिए स्कैनर डिस्कवरी कंसोल देख सकते हैं कि यह कैसे काम करना चाहिए। यह जो मैंने किया है।

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