কীভাবে এআরএমের জন্য সংকলনটি অতিক্রম করবেন?


41

আমি কীভাবে এআরএম প্রসেসরের ক্রস সংকলনের জন্য জিসিসি সেট আপ করব? হোস্টটি x86_64 (এএমডি 64 - উবুন্টু 12.04) এ থাকবে এবং লক্ষ্যটি এআরএম হবে (রাস্পবেরি পাই পাশাপাশি পান্ডবোর্ড - প্রত্যেকটির জন্য পৃথক সংকলন করবে)?

উত্তর:


44

ইনস্টল করুন gcc-arm-linux-gnueabiএবং binutils-arm-linux-gnueabiপ্যাকেজগুলি এবং তারপরে সংকলনের arm-linux-gnueabi-gccপরিবর্তে কেবল ব্যবহার করুন gcc

আপনার টার্গেট সিস্টেমে আপনার কী লিনাক্স এবং বাইনুটিলের স্বাদ রয়েছে সে সম্পর্কে আপনাকে সতর্কতা অবলম্বন করা উচিত। সর্বাধিক নতুন স্টাফগুলি হার্ডফ্লোট, এক্ষেত্রে আপনি যা করবেন:

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

এটি বিন্টুলিসহ সম্পূর্ণ ক্রস-সংকলন পরিবেশ নিয়ে আসে।


উবুন্টু ১৩.১০-তে আপনি 'জেনুয়াবি'র জন্য জিসিসি-৪.7 এবং' জেনুয়াবিহ্ফ'-এর জন্য জিসিসি-৪.৮ পাবেন।
নোবার

আমি যখন সংকলনের চেষ্টা করেছি তখনই আমি openssl/ossl_typ.hইনস্টল করা সত্ত্বেও ত্রুটিটি পাইনি libssl-dev
নেকটিভি

1
আপনি যদি উত্স কোডটি থেকে পান apt-get source, apt-get build-depআপনি সাধারণভাবে কেবল সংকলন করার পরেও dpkg-buildpackage -b -uc -us -rকী এটিএমএফ পরিবর্তন না করে এআরএমের জন্য সহজেই একটি .deb তৈরির উপায় আছে?
জোনাথন

@ মারাটিজজকাজা আপনি কি লাইনটি কার্যকর করার বিষয়ে আরও সুনির্দিষ্ট হতে পারেন and then just use arm-linux-gnueabi-gcc instead of gcc for compilation? আমি যখন সংকলন করি তখন আমি কলটি ব্যবহার করি makeযা AFAIK স্বাভাবিকভাবেই /usr/lib/gccতার নিকটে বা অন্য কিছুকে নির্দেশ করে। আমি কীভাবে সরাসরি আর্ম-লিনাক্স-জেনুয়াবি-জিসিসি কল করতে পারি?
মোমরগিল

9
@ মোমেরগিলCC=arm-linux-gnueabihf-gcc make ...
মারাটিস্কেজা

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 wi / 49349237 # 49349237 এটি উত্স থেকে সবকিছু তৈরি করে এবং নিশ্চিত করে যে সবকিছু উপযুক্ত compatible

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.