2012-11-02 29 views
5

के लिए मोनो को क्रॉस-संकलित नहीं कर सकता है पिछले तीन दिनों से मैं टेकनेक्सियन बर्फ़ीला तूफ़ान बोर्ड (एंगस्ट्रॉम का अज्ञात संस्करण चला रहा है) के लिए मोनो 2.11.4 को पार करने की कोशिश कर रहा हूं, मेरे वर्चुअल उबंटू (12.04) का उपयोग करके विन 7 32 बिट मशीन और कोडसॉररी सोर्सरी जी ++ एआरएम टूलचेन, लेकिन कम/कोई सफलता नहीं। मैंने वेब पर हर ट्यूटोरियल का पालन किया है लेकिन यह काम नहीं करता है।एआरएम

कोडसोर्सरी सॉर्केरी जी ++ टूलचेन और स्क्रैचबॉक्स 2 (नवीनतम गिट स्रोतों से संकलित) स्थापित और काम कर रहे हैं। Scratchbox2

sb2-init armv7 /home/dev/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc 

का उपयोग कर इसे सेट अप करते समय सही निर्देशिका (~/CodeSourcery/Sourcery_G ++ _ लाइट/हाथ-नन-linux-gnueabi/libc) में।

मैं एक साधारण 'हैलो वर्ल्ड' (सीपीपी) संकलित कर सकता हूं, इसे संकलित और बोर्ड पर चला सकता हूं। उबंटू में:

file hello 
hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped 

मैं मोनो 2.11.4 के लिए स्रोत डाउनलोड किया है और instructions में से एक का पालन किया। पहला भाग (मूल मशीन पर) अच्छी तरह से काम करता है, कोई त्रुटि नहीं। हालांकि, जब मैं दूसरा भाग चलाता हूं (एआरएम के लिए संकलन) ./configure अपेक्षित रूप से काम करता है लेकिन फिर "../lib/mini[some_file] के साथ असफल होता है"। इन फ़ाइलों पर फ़ाइल कहती है कि वे वास्तव में इंटेल 80386 निष्पादन योग्य हैं, लेकिन मुझे नहीं पता कि क्यों।

तो अगला चरण चलाने के लिए साफ़ करें और चरणों को दोहराएं, लेकिन यह अभी भी एक ही परिणाम उत्पन्न करता है।

मैं तो कॉन्फ़िगर और करने की कोशिश की पूरी बात बजाय बनाने SB2 के अंदर और यह पहली बार में काम करने के लिए लग रहा था। लेकिन फिर कुछ त्रुटियाँ अप पॉपअप निर्माण तोड़ दिया:

./.libs/libmini.a(libmini_la-mini-arm.o): In function `mono_arch_init': 
/home/dev/source/host-mono/mono-2.11.4/mono/mini/mini-arm.c:689: undefined reference to `debugger_agent_single_step_from_context' 
/home/dev/source/host-mono/mono-2.11.4/mono/mini/mini-arm.c:689: undefined reference to `debugger_agent_breakpoint_from_context' 
/home/dev/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ld: .libs/libmono-2.0.so.1.0.0: hidden symbol `debugger_agent_single_step_from_context' isn't defined 
/home/dev/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ld: final link failed: Nonrepresentable section on output 

मैं गलत क्या कर रही हूं पर कोई विचार, या ट्यूटोरियल पर कोई सुझाव मैं याद किया हो सकता है?

// ऐन्डर्स

+0

क्यों मोनो 2.11.4 और मोनो 3.0 नहीं? 11 एक विषम संख्या है इसलिए इसका अर्थ है "अस्थिर" – knocte

+0

निश्चित रूप से, मैं 2.10.9 के साथ प्रयास कर सकता हूं लेकिन मुझे नहीं लगता कि यह या तो संकलित होगा। परंतु मै प्रयत्न करुंगा। 3.0 अभी भी बीटा में है, इसलिए यह अब एक विकल्प नहीं है। – user1143242

+0

यदि मोनो 3.0 संकलित करता है और पुराने संस्करण नहीं हैं, तो इसके बजाय कुछ भी नहीं है, नहीं? ;) बीटीडब्ल्यू आपने 3.0 को कहाँ पढ़ा था बीटा के रूप में चिह्नित किया गया है? – knocte

उत्तर

1

यह एक नया टर्मिनल खोलने के लिए और प्रबंधित कोड का निर्माण दूसरे पक्ष पर मूल कोड

[sbox-ARMEL: ~] > mkdir cross 
[sbox-ARMEL: ~] > cd cross 
[sbox-ARMEL: ~] > tar xzf ../mono-x.xx.tar.gz 

[sbox-ARMEL: ~] > cd arm-mono-x.xx 
[sbox-ARMEL: ~] > ./configure --disable-mcs-build 
[sbox-ARMEL: ~] > make 
[sbox-ARMEL: ~] > make install DESTDIR=`pwd`/tmptree 

संकलन के लिए ScratchBox उपयोग करने के लिए बेहतर है।

$ mkdir host-mono 
$ cd host-mono 
$ tar xzf ../mono-1.xx.tar.gz 

$ cd mono-1.xx 
$ ./configure 
$ make 
$ make install DESTDIR=`pwd`/tmptree 
+2

तो स्क्रैचबॉक्स 2 से स्क्रैचबॉक्स का उपयोग करना बेहतर है? मुझे यह महसूस हो रहा है कि कुछ गंभीर गुगल करते समय यह दूसरी तरफ था (कि एसबी 2 बेहतर है)। – user1143242

0

आप बहुत सावधान जो हेडर और पुस्तकालयों आप जब पार संकलन के खिलाफ संकलन करने की आवश्यकता है या आप अपने आप को पुस्तकालयों के खिलाफ द्विआधारी असंगतताओं के कारण होता कार्यावधि में विचित्र और जवाबी सहज ज्ञान युक्त दुर्घटनाओं के साथ मिल सकता है। यह कहकर, लिनक्स एआरएम डिस्ट्रोज़ बाइनरी संगतता के साथ बहुत सुरक्षित खेलते हैं - आम तौर पर प्रदर्शन की कीमत पर।

यह संभव है कि आप अपने विकास होस्ट हेडर और पुस्तकालयों के खिलाफ निर्माण कर रहे हों - इसलिए आर्किटेक्चर मेल नहीं खाता है।

आपको लगता है कि पूर्व-निर्मित opkg छवियां बस काम करती हैं। एंगस्ट्रॉम आपके लिए pre-built packages प्रदान करता है। यह एंगस्ट्रॉम पैकेज भंडार से नेटवर्क-इंस्टॉलेशन के रूप में सरल हो सकता है।

यदि आपको लगता है कि आपको स्रोत से निर्माण करने की आवश्यकता है, तो आपकी समस्या का एक आसान समाधान अंगस्ट्रॉम के लिए निर्माण वातावरण प्राप्त करना होगा और मोनो बनाने के लिए इसका उपयोग करना होगा। इसके बारे में जाने का सबसे आसान तरीका the Angtrom online image builder से पूर्व-निर्मित छवि (और विकास छवि) प्राप्त करना है। किसी भी भाग्य के साथ आपके बोर्ड के लिए मौजूद है।

+0

दुर्भाग्यवश बोर्ड नारसीसस पेज पर सूचीबद्ध नहीं है, लेकिन मुझे गहराई से खोदना होगा और देखें कि क्या कोई "compatibles" है। – user1143242

+0

मैंने बीगलबोर्ड का परीक्षण करते समय निर्माता को कई बार उपयोग किया है, लेकिन मैंने कभी भी मोनो सहित निर्माण को पूरा करने में कामयाब नहीं रहा है। वास्तव में नहीं पता क्यों, यह काम नहीं करता है ... मैंने सोचा कि मैं काम कर रहा था जब मैं एक स्क्रैचबॉक्स 2 के अंदर संकलित करता हूं। जैसा कि मैंने कहा: मैं सरल कार्यक्रमों (और यहां तक ​​कि स्क्लाइट 3) संकलित कर सकता हूं लेकिन मोनो विफल रहता है। – user1143242

+0

मैं पहले से ही प्री-बिल्ट मोनो का उपयोग कर रहा हूं (** opkg ** का उपयोग करके स्थापित) लेकिन दुर्भाग्यवश यह संस्करण 2.6.3 है। मुझे अपना .NET 4.0 कोड चलाने के लिए 2.10.x की आवश्यकता है। 2.10.8 प्री-बिल्ट के रूप में मौजूद है, लेकिन केवल एंगस्ट्रॉम के एक नए संस्करण के लिए उपयोग कर रहा हूं, इसलिए शायद मुझे एंगस्ट्रॉम को अपग्रेड करने पर ध्यान देना चाहिए? – user1143242