2009-05-18 9 views
6

आलेख Porting Qt for Embedded Linux to Another Operating System एंबेडेड लिनक्स के लिए अन्य ओएस में पोर्ट क्यूटी के लिए पांच चीजें सूचीबद्ध करता है।इस तरह के रूप में एक और ओएस पर qt पोर्टिंग कर रहा है?

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

यह वास्तव में एक और ओएस के लिए बंदरगाह क्यूटी को यह आसान है, या मैं कुछ जानकारी याद है?

+10

इनमें से कोई भी चीज़ मेरे लिए विशेष रूप से आसान नहीं है। –

+0

सूचीबद्ध चरणों को बहुत जटिल नहीं होना चाहिए क्योंकि आपके पास एक ओएस है जो आलेख में वर्णित तंत्र का समर्थन करता है। –

उत्तर

0

अधिक जानकारी में इसकी जांच करने के बाद मैं इस निष्कर्ष पर पहुंचा हूं कि "एंबेडेड लिनक्स के लिए एंबेडेड लिनक्स के लिए पोर्टिंग क्यूटी" लेख यह मानता है कि आप क्यूटी को बहुत "लिनक्स-जैसे" ओएस पर पोर्ट कर रहे हैं।

1

मान लीजिए कि आप उन सभी चीजों को आसान पाते हैं, तो बंदरगाह आसान है।

2

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

0

मैंने इसका प्रयास किया है और वर्तमान में प्रगति कर रहा है। कुछ कठिनाइयों:

आईडीई - मुझे मैन्युअल रूप से सभी क्यूटी फाइलें जोड़नी होंगी और #ifdefs के साथ कंपाइलर से लड़ना होगा जब तक कि यह सभी निर्भरताओं के साथ नहीं बनता।

लिनक्स (नेस) - मुझे उन सभी लिनक्स/विंडोज चीजों को अक्षम करना पड़ा जो मेरे लक्षित ओएस: थ्रेड, सॉकेट, प्रक्रियाओं में समर्थित नहीं हैं। यहां तक ​​कि टाइमर थोड़ा अलग हैं।

युक्तियाँ: छोटा शुरू करें: मैंने क्यूटीकोर को अपने आईडीई के भीतर मानक lib के रूप में संकलित किया, अगली बार QtGui है जो QtCore की तुलना में एक बेहेमोथ है।

मैं केवल एक ही QThread चलाने की योजना बना रहा हूं, इसलिए मुझे कृत्रिम रूप से शून्य पॉइंटर्स से बचने के लिए एक थ्रेड ऑब्जेक्ट बनाना है। आप थ्रेड जानकारी को संकलित नहीं कर सकते क्योंकि यह सभी QObjects के लिए महत्वपूर्ण है।

अब तक मेरे पास एक qeventloop एक qcoreapplication के भीतर चल रहा है। मैंने कुछ इनलाइन असेंबली लिखी लेकिन मुझे अपने आईडीई और संकलन के साथ गंभीर कठिनाइयों का सामना करना पड़ा। मैंने इसे सी ++ में छोड़ा और असेंबलर को मेरे लिए इसे संभालने दें। क्योंकि मैं एकल-थ्रेडेड हूं, मैं परमाणु संचालन के अनुसार साझा डेटा/विशेष पहुंच से बहुत चिंतित नहीं हूं।

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