एआरएम के लिए संकलन कैसे पार करें?


41

मैं एआरएम प्रोसेसर के लिए क्रॉस कंपाइलिंग के लिए जीसीसी कैसे स्थापित करूं? मेजबान x86_64 (AMD64 - Ubuntu 12.04) पर होगा और लक्ष्य ARM (रास्पबेरी पाई और साथ ही पांडाबार्ड - प्रत्येक के लिए अलग-अलग संकलन करेगा) होगा?

जवाबों:


44

स्थापित करें gcc-arm-linux-gnueabiऔर binutils-arm-linux-gnueabiपैकेज करें, और फिर संकलन के arm-linux-gnueabi-gccबजाय बस उपयोग करें gcc

आपको अपने लक्ष्य प्रणाली पर आपके द्वारा दिए गए लिनक्स और बिनुटिल्स के स्वाद के बारे में सावधान रहने की आवश्यकता है। नवीनतम सामान हार्डफ्लोट है, इस मामले में आप क्या करेंगे:

sudo apt-get install gcc-arm-linux-gnueabihf

यह पूरी तरह से संकलित वातावरण में लाता है, जिसमें बिनुटिल भी शामिल है।


उबंटू 13.10 पर आपको 'gnueabi' के लिए gcc-4.7 और 'gnueabihf' के लिए gcc-4.8 मिलता है।
नोबार

जब मैंने संकलन करने की कोशिश की तो मुझे openssl/ossl_typ.hत्रुटि नहीं मिली, हालांकि मैं पहले से ही स्थापित था libssl-dev
नेकटविली

1
यदि आपको स्रोत कोड प्राप्त होता है apt-get source, apt-get build-depतो आप सामान्य रूप से केवल संकलन कर सकते हैं। dpkg-buildpackage -b -uc -us -rक्या बिना मेकफाइल बदले एआरएम के लिए आसानी से -deb बनाने का कोई तरीका है?
जोनाथन

@Maratyszcza क्या आप लाइन के निष्पादन के संबंध में अधिक विशिष्ट हो सकते हैं and then just use arm-linux-gnueabi-gcc instead of gcc for compilation? जब मैं संकलित करता हूं, तो मैं एक कॉल का उपयोग करता हूं make, एएफएआईके, स्वाभाविक रूप से /usr/lib/gccया उसके करीब कुछ इशारा करता है। मैं सीधे हाथ-लिनुक्स-ग्नूआबी-जीसीसी कैसे कह सकता हूं?
मोमेर्जिल

9
@MomergilCC=arm-linux-gnueabihf-gcc make ...
Maratyszcza

1

डिस्क छवि प्रदाता को एक संगत क्रॉस कंपाइलर भी प्रदान करना होगा

यह एकमात्र विश्वसनीय तरीका है।

विशेष रूप से आरपीआई के लिए, प्रदान किए गए क्रॉस कंपाइलर यहां उपलब्ध हैं: https://github.com/raspberrypi/tools और इसका उपयोग इस रूप में किया जा सकता है: https://raspberrypi.stackexchange.com/questions/64273/installing-raspberry- अनुकरणीय-पार संकलक / 83215 # 83215

git clone https://github.com/raspberrypi/tools
export PATH="$(pwd)/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:${PATH}"
printf '#include <stdio.h>\nint main() { puts("hello world"); }\n' > hello_world.c
printf '#include <iostream>\nint main() { std::cout << "hello world" << std::endl; }\n' > hello_world.cpp
arm-linux-gnueabihf-gcc -std=c99 -o hello_world_c hello_world.c
arm-linux-gnueabihf-g++ -std=c++11 -o hello_world_cpp hello_world.cpp

यदि आप गलत तरीके से अपना क्रॉस कंपाइलर चुनते हैं, तो निम्न हो सकता है:

मेरा पसंदीदा विकल्प बिल्डरोट के साथ अपनी खुद की छवि बनाना है: https://stackoverflow.com/questions/47557262/how-to-download-the-torvalds-linux-kernel-master-recompile-it-and-boot-it- wi / 49349237 # 49349237 यह स्रोत से सब कुछ बनाता है और सुनिश्चित करता है कि सब कुछ संगत है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.