मैं Ubuntu 12.04 i386 होस्ट पर Ubuntu 12.04 armhf आर्किटेक्चर के लिए अपने आवेदन को कैसे पार कर सकता हूं?


16

मेरे पास एक बड़ा आवेदन है जो मैंने लिखा है। मैं निम्नलिखित परिदृश्य में एप्लिकेशन को सफलतापूर्वक संकलित कर सकता हूं:

  • Ubuntu 12.04 चल रहे i386 होस्ट के लिए एक मूल संकलन में
  • मूल रूप से Ubuntu 12.04 पर चलने वाले एक पांडा पर (यह एक लंबा समय लगता है)
  • Qemu और आर्महैंड PandaBoard लक्ष्य के लिए होस्ट पीसी पर एक चुरोट का उपयोग करना (यह बहुत लंबा समय लगता है)

मैं i386 होस्ट पर एप्लिकेशन को क्रॉस-संकलित करना चाहता हूं, ताकि समय पर फैशन को पूरा करने के लिए पांडाबोर्ड जैसे लक्ष्य पर चला जा सके। अब तक रिपॉजिटरी में आर्म-लाइनक्स-ग्नूबीहॉफ टूल चेन का उपयोग करके किए गए प्रयासों ने बायनेरिज़ का उत्पादन किया है जो सही ढंग से नहीं चलते हैं। इस स्तर पर, सॉफ्टवेयर को पैकेज करने की मेरी कोई योजना नहीं है।

एक सफल क्रॉस-संकलन प्राप्त करने का अनुशंसित तरीका क्या है?


क्रॉस-कंपाइलर टूलचैन के साथ क्रॉस-संकलन को काम करना चाहिए, यही इसके लिए है। किस तरीके से बायनेरिज़ सही तरीके से नहीं चलते हैं?
गाइल्स का SO- बुराई पर रोक '20

मेरी बायनेरिज़ लगभग तुरंत समाप्त हो जाती हैं। स्ट्रेच से प्रतीत होता है कि libc.so.6 वह जगह नहीं है जहां यह होने की उम्मीद है।
जोनाथन गुफा

यह एक लिंक विकल्प (जो मुझे पता नहीं है) से ठीक होना चाहिए। क्या लक्ष्य प्रणाली उबंटू चला रही है?
गिलेस एसओ- बुराई को रोकना '

हां लक्ष्य भी Ubuntu 12.04 चल रहा है। मैंने सोचा था कि शायद मुझे संकलक और लिंकर के लिए --sysroot विकल्प का उपयोग करने की आवश्यकता थी, लेकिन यह उबंटू टूलचैन में अक्षम है।
जोनाथन गुफा

टूलचेन मेरे लिए 12.04 पर काम करता है। मैंने अभी इसे amd64 पर परीक्षण किया है, और सफलतापूर्वक इसे बाइनरी सर्वर पर उत्पादित बाइनरी को चलाया है। लेकिन मेरे पास i386 बिल्ड मशीन काम नहीं है। यदि आपको अभी भी समस्या हो रही है, तो आपको विस्तार से बताना होगा। क्या कहता है ldd? आपने स्ट्रेस से क्या देखा जो आपको अपने निष्कर्ष पर ले गया? देखें कि क्या आप अपनी समस्या को एक साधारण परीक्षण मामले में कम कर सकते हैं जो स्पष्ट रूप से काम करना चाहिए, और आपके द्वारा उठाए जा रहे चरणों को विस्तार से प्रस्तुत करना चाहिए।
रॉबी बसाक

जवाबों:


6

https://wiki.linaro.org/Platform/DevPlatform/CrossCompile/UsingMultiArch

https://wiki.ubuntu.com/MultiarchCross

उबंटू में एक क्रॉस-टूलचैन है, apt-get install gcc-arm-linux-gnueabihfलेकिन अगले-जेन टूलचिन पर काम यहां चर्चा की गई है: http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnueabihf/

इस बिंदु पर कई वर्कअराउंड आवश्यक हैं। उदाहरण के लिए, यदि आप अप्रत्यक्ष लिंकिंग (लिनरो विकी पेज में कवर) का उपयोग करते हैं, तो आपको उन्हें संकलित करने के ठीक बाद विदेशी बायनेरी चलाने से भी बचना चाहिए।

इसके अलावा, ऑटोटूल के साथ वास्तव में सबसे परिपक्व है।

मुझे अपना पैकेज काफी जल्दी पार करने के लिए मिल गया।

apt-get build-dep -aarmhf foo-pkg
apt-get source foo-pkg
cd foo-pkg-*
dpkg-buildpackage -aarmhf

3
कृपया बताएं कि ये चरण क्या करते हैं, और स्विच -आर्मफ क्या है। वे कई उपयोगकर्ताओं के लिए परिचित नहीं हैं, उन्हें एक उपयोगी परत प्राप्त करने के लिए एक और परत की खोज करने की आवश्यकता है। धन्यवाद।
गैरीप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.