c++ सी++/क्यूटी/एआरएम प्रोसेसर क्रॉस-कंपाइलिंग/प्रोग्रामिंग



linux qt (1)

प्रिय सभी {सी ++ | क्यूटी | एआरएम प्रोसेसर} डेवलपर्स

नमस्ते

हाल ही में, मैं एक क्यूटी / एआरएम प्रोसेसर सॉफ्टवेयर विकास परियोजना में शामिल हूं। परियोजना के सामान्य घटक हैं:

Processor: Mini440 FriendlyARM (400 MHz Samsung S3C2440 ARM926T), 
    www.friendlyarm.net
    www.arm9.net
OS: Linux (Kernel version 2.6.32)
Programming Language: C++ (GCC/g++)
GUI Framework: QT

परियोजना का मुख्य उद्देश्य क्यूटी / एंबेडेड लिनक्स का प्रयोग करके एम्बेडेड हैंडहेल्ड डिवाइस के लिए एक जीयूआई विकसित करना है।

होस्ट कंप्यूटर (डेवलपमेंट मशीन) पर कमांड अनैम-ए का आउटपुट है:

$ एकेम- ए

लिनक्स बिच्छू 3.5.0-39-जेनेरिक # 60 ~ सटीक 1-उबंटू एसएमपी बुध 14 अगस्त 15:38:41 यूटीसी 2013 x86_64 x86_64 x86_64 जीएनयू / लिनक्स

एम्बेडेड एआरएम-आधारित डिवाइस पर कमांड अनएम-ए का आउटपुट है:

Liunx FriendlyARM 2.6.32-फ्रेंडलीराज # 5 बुध जून 6 15:50:50 एच.के.टी. 2012 armv4tl अज्ञात।

मेरा पहला सवाल यह है:

प्रश्न: क्या मेजबान और लक्ष्य करना ज़रूरी है कि कंप्यूटर का एक ही आर्किटेक्चर है, मेरा मतलब है दोनों 32-बिट (x 86 या i586 / i686) या दोनों 64-बिट (x86_64) होना चाहिए?

मैंने निम्न चरणों का पालन किया:

  1. मैंने एक लिनक्स लिनक्स मशीन (मेजबान कंप्यूटर) पर क्यूटी डिज़ाइनर (5.0.2) पर आधारित क्यूटी क्रिएटर (2.7.0) का उपयोग करके एक साधारण जीयूआई लिखा था

  2. ज्ञान के आधार पर, मैंने पुस्तकों और इननेट से क्रॉस-कंपाइलिंग और टूल-चेन और कई अन्य कई संबंधित अवधारणाओं के बारे में पिछले दो महीनों में प्राप्त किया, मुझे पता चला कि मुझे ट्रोलटेक से क्यूटीटॉप नामक एक अन्य सॉफ़्टवेयर स्थापित करना होगा, क्यूटी के एम्बेडेड संस्करण। मैं qtopia-core-opensource-src-4.3.5 नामक Qtopia के नवीनतम संस्करण को इस बिंदु पर स्थापित करने की कोशिश करता हूं, मुझे सॉफ़्टवेयर कॉन्फ़िगरेशन, निर्माण और बनाने में बहुत समस्याएं थीं। एक समस्या होस्ट पर जी ++ है 4.8.1 (बहुत नया), लेकिन कूपिया लगभग 7 साल पहले के लिए है जब मैं स्रोत से कूप्टिया का निर्माण करने की कोशिश करता हूं तो जी ++ कंपाइलर कई सी + + त्रुटियों के मुद्दे, उदाहरण के लिए:

    त्रुटि: 'ptrdiff_t' एक प्रकार की त्रुटि का नाम नहीं है: 'एपेंड' को इस क्षेत्र में घोषित नहीं किया गया था, और कोई घोषणा नहीं है, जहां तर्क आधारित निर्भरता द्वारा पाया गया

बेशक, मैंने इन समस्याओं का समाधान किया है, लेकिन यह स्पष्ट है जी ++ इन त्रुटियां हैं क्योंकि क्यूप्पटिया सी ++ 98 का ​​उपयोग करते हुए लिखा गया था, लेकिन जी ++ 4.8.1 सी ++ 11 पर आधारित है मेरे प्रश्न ये हैं:

प्र। क्या क्यूप्पटिया के साथ जीसीसी के संस्करण का उपयोग करना महत्वपूर्ण है? दूसरी बात यह है कि क्यूटी / एम्बेडेड का कौन सा संस्करण इस्तेमाल किया जाना चाहिए?

प्र। क्या मुझे क्यूटी के पुराने संस्करणों का प्रयोग करना है, जैसे क्यूप्पटिया या मैं नए संस्करणों का उपयोग कर सकता हूं जैसे qt-everywhere-opensource-src-4.8.4?

दूसरी समस्या कर्नेल संस्करण के बारे में है: क्या यह महत्वपूर्ण है? क्या कंप्यूटर को मेजबान और लक्ष्य करना महत्वपूर्ण है, वही कर्नेल संख्या (xyz) है?

जैसा कि आप देख सकते हैं, मैं मेजबान से एम्बेडेड डिवाइस पर लिखित सॉफ़्टवेयर क्रॉस-कंपाइल करने और पोर्टिंग के विवरण खो गया। मुझे क्यूटी के इस्तेमाल और डेस्कटॉप संस्करण में C ++ लिखने में लगभग कोई समस्या नहीं है। आखिरकार, मैं आपकी सराहना करता हूं कि आपका सामान्य लेकिन व्यावहारिक दिशानिर्देश / x86 जीसीसी से फ़्रीइंडिअर्म प्लेटफॉर्म से क्रॉस-कंपाइल करने के लिए सुझाव दें।

कृपया कुछ प्रकाश डालें

TIA

सईद अमोरलि ब्योओकी


प्रश्न: क्या मेजबान और लक्ष्य करना ज़रूरी है कि कंप्यूटर का एक ही आर्किटेक्चर है, मेरा मतलब है दोनों 32-बिट (x 86 या i586 / i686) या दोनों 64-बिट (x86_64) होना चाहिए?

नहीं, आप कोई भिन्नता कर सकते हैं, हालांकि मैंने 32 बिट होस्ट और 64 बिट लक्ष्य कभी नहीं देखा है। अन्य संयोजन सिर्फ अपने ज्ञान के अनुसार काम करना चाहिए।

प्र। क्या क्यूप्पटिया के साथ जीसीसी के संस्करण का उपयोग करना महत्वपूर्ण है? दूसरी बात यह है कि क्यूटी / एम्बेडेड का कौन सा संस्करण इस्तेमाल किया जाना चाहिए?

हां, यह महत्वपूर्ण है पुराने और नए सॉफ़्टवेयर के मिश्रण न करें क्योंकि वे अच्छी तरह से एक साथ फिट नहीं होंगे।

प्र। क्या मुझे क्यूटी के पुराने संस्करणों का प्रयोग करना है, जैसे क्यूप्पटिया या मैं नए संस्करणों का उपयोग कर सकता हूं जैसे qt-everywhere-opensource-src-4.8.4?

नहीं, वास्तव में, क्यूप्टीआ प्राचीन का उपयोग न करें, क्यूटी 5.2 जैसी हालिया क्यूटी रिलीज का उपयोग करने का प्रयास करें। इसका कारण यह तथ्य है कि डिजाइन दोष हैं, और यह इन दिनों रखरखाव नहीं हो रहा है

दूसरी समस्या कर्नेल संस्करण के बारे में है: क्या यह महत्वपूर्ण है? क्या कंप्यूटर को मेजबान और लक्ष्य करना महत्वपूर्ण है, वही कर्नेल संख्या (xyz) है?

नहीं, यह लगभग हमेशा अलग होता है, वास्तव में यह इस तथ्य के कारण है कि वहाँ बहुत सारे किस्म के लिनक्स कर्नेल हैं, जो कि विभिन्न वितरण या वितरण जनरेटर द्वारा उपयोग किए जाते हैं।

आखिरकार, मैं आपकी सराहना करता हूं कि आपका सामान्य लेकिन व्यावहारिक दिशानिर्देश / x86 जीसीसी से फ़्रीइंडिअर्म प्लेटफॉर्म से क्रॉस-कंपाइल करने के लिए सुझाव दें।

यदि आप अपने लक्ष्य के लिए स्वयं क्यूटी बनाना चाहते हैं, तो आपको -platform और -xplatform विकल्पों पर ध्यान देना होगा। पहले आपके होस्ट प्लेटफार्म को परिभाषित करता है, और बाद में एम्बेडेड लक्ष्य प्लेटफॉर्म।

असल में, आपको क्यूमेक बनाने की जरूरत है आपके बोर्ड के लिए mkspecs फ़ाइलों के रूप में उचित समर्थन है यदि ऐसा नहीं होता है, तो मौजूदा लोगों के आधार पर एक को खरोंच से प्राप्त करना अपेक्षाकृत आसान है।

जब आप एम्बेडेड बोर्ड के लिए अपने सॉफ्टवेयर का निर्माण करते हैं, तो आपको सही लक्ष्य चुनने के लिए एक क्यूमेक आधारित प्रोजेक्ट में -spec विकल्प का उपयोग करना होगा।

मैं क्यूटीक्रिएर को कुछ नवाचार देने का सुझाव भी देता हूं, जहां आप "किट" को ठीक से कॉन्फ़िगर कर सकते हैं, और तैनाती के कदमों को अनुकूलित कर सकते हैं, आदि। इसमें बहुत सारे बिल्टिन क्रॉस-टूलचेन विकास समर्थन हैं





qmake