ক্রস-সংকলনের জন্য আমি কীভাবে একটি জিসিসি 4.7 সরঞ্জামচেন তৈরি করব?


82

আমি স্ট্যাক ওভারফ্লোতে এই প্রশ্নটি ইতিমধ্যে জিজ্ঞাসা করেছি , তবে আমি জানতে চাই যে কেউ এআরএম ক্রস-সংকলনের জন্য (একটি x86 / x86-64 লিনাক্স হোস্টের জন্য) একটি জিসিসি 4.7 টুলচেন তৈরি করতে সক্ষম হয়েছে কিনা তা জানতে চাই। উত্স থেকে জিসিসি তৈরির জন্য অনেক নির্দেশনা রয়েছে এবং প্রাক-4.7 জিসিসি সংস্করণগুলির জন্য অনেকগুলি উপলভ্য ক্রস-সংকলক রয়েছে, এটি কেবল সর্বশেষ নয়।

রাস্প পাইতে সংকলন নিজেই সূক্ষ্মভাবে কাজ করে, তবে এটি ব্যবহারিক উদ্দেশ্যে খুব সামান্য।

আমি সংকলন পেতে আগ্রহী এবং আমি সর্বশেষ এবং সেরা সরঞ্জাম ব্যবহার করতে চাই।


এটি আমার পাশাপাশি করণীয় হিসাবে লাইন বরাবর মনে হয়। আমরা একটি আরএম 5 চালিত আর্চ লিনাক্সের জন্য বিকাশ করছি। উন্নয়ন উবুন্টু লিনাক্স 10.04 এলটিএসে রয়েছে (আজ, সম্ভবত আমরা আগামীকাল এটি আপগ্রেড করব, আমি এখনও জানি না)। বর্তমানে আমরা জিসিসি ৪.৪ চালাচ্ছি, তবে সি ++ ১১ ভাষার বৈশিষ্ট্যগুলির জন্য, জিসিসি ৪.৮ (আমরা যদি এটি পরিচালনা করতে পারি না) না হলে জিসিসি ৪. ((সর্বনিম্ন) প্রয়োজন না হলে আমার যে জিনিসগুলি করা দরকার তা সহায়ক হবে। দেখে মনে হচ্ছে এআরএমের জন্য উপলব্ধ সমস্ত সরঞ্জাম চেইন (5 বা অন্য কিছু) অসহায়ভাবে পুরানো। উত্স থেকে ক্রস সংকলক সরঞ্জাম চেইন তৈরি করা এবং আমরা যে জিসিসি চাই তা সমর্থন করা কি সম্ভব?
mwpowellhtx

দ্বিতীয় ধাপে আমার একটু সমস্যা হচ্ছে। আসলে, আমি। / কনফিগার এবং কমান্ডগুলি তৈরি করেছি done সবকিছু ঠিকঠাক কাজ করে। তবে যখন আমি "ইনস্টল" টিপ করেছি, তখন আমি একটি ত্রুটি বার্তা পেয়েছিলাম যেটি বলে: ইনস্টল করুন: অনুপস্থিত ফাইল অপারেন্ড

আরও দেখুন: raspberrypi.stackexchange.com/q/14587/5538 আমি এটিকে একটি ডুপ হিসাবে বন্ধ করে দিয়েছি, তবে আমি এখানে এটি লিঙ্ক করার জন্য ভেবেছিলাম কারণ গৃহীত উত্তর এখানে উল্লেখযোগ্য বিবরণে অন্তর্ভুক্ত নয়।
স্বর্ণলোকস

উত্তর:


60

আমি এই নির্দেশাবলী পেয়েছি কিভাবে আপনার রাস্পবেরি পাই এর জন্য ক্রস সংকলক তৈরি করবেন । এটি এমন একটি crosstool-ngসরঞ্জাম ব্যবহার করে দুর্দান্ত হাঁটা যা ক্রস-সংকলক বিল্ড এ লটকে সহজতর করে তোলে (এটিতে একটি দুর্দান্ত শাপ-ভিত্তিক ইন্টারফেস রয়েছে) এবং এটি জিসিসি 4.7 সমর্থন করে।

আমি এই পদক্ষেপগুলি অনুসরণ করেছি এবং একটি সফল 4.7 ক্রস সংকলক তৈরি করে শেষ করেছি।

পূর্বশর্ত: নিম্নলিখিত প্যাকেজগুলি প্রয়োজন: বাইসন , আনমন , gperf , হাবা , libtool , automake , ছ ++, নিশ্চিত এই অগ্রসর হওয়ার আগে ইনস্টল করা নেই।

  1. এখানcrosstool-ng থেকে প্রথম ডাউনলোড করুন (আমি সংস্করণটি 1.15.2 ব্যবহার করেছি)।
  2. বিতরণটি আনপ্যাক করুন এবং একটি ./configure/ make/ করুনinstall
  3. ফাইল-সিস্টেমের কোথাও cdএটিকে তৈরি করতে একটি নতুন ডিরেক্টরি তৈরি করুন ।
  4. চালান ct-ng menuconfig। আপনার বিল্ডটি কনফিগার করতে আপনাকে মেনুগুলির একটি দুর্দান্ত সেট উপস্থিত করা হবে।
  5. পাথ এবং বিবিধ বিকল্পগুলিতে যান এক্সপেরিমেন্টাল হিসাবে চিহ্নিত বৈশিষ্ট্যগুলি সক্ষম করুন।
  6. একটি উপযুক্ত উপসর্গ ডিরেক্টরি চয়ন করুন । এটি সেই ডিরেক্টরি যা আপনার সংকলক এবং গ্রন্থাগারগুলি ইনস্টল হয়ে যাবে (মূলত কিছু ভাল আছে, কেবল ডিরেক্টরিটি খালি রয়েছে তা নিশ্চিত করুন)।

    • দ্রষ্টব্য: আপনার পছন্দের ফোল্ডারে লেখার অ্যাক্সেস থাকাও গুরুত্বপূর্ণ
  7. লক্ষ্য বিকল্পসমূহ মেনুতে যান ।

    • লক্ষ্য আর্কিটেকচার: বাহু
    • অন্তঃসত্ত্বা: ছোট্ট এন্ডিয়ান
    • উত্তর: 32-বিট
  8. এছাড়াও আপনি ফ্লোটিং পয়েন্ট প্যারামিটার সেট করতে চান হতে পারে softfp (দেখুন এই আরও তথ্যের জন্য), কিন্তু hardfp Raspbian জন্য আরো উপযুক্ত।

  9. যান অপারেটিং সিস্টেম মেনু এবং পরিবর্তন লক্ষ্য ওএস থেকে লিনাক্স
  10. সি সংকলক মেনুতে যান এবং জিসিসি সংস্করণ 4.7.0 চয়ন করুন (নিবন্ধটি লিনারোর প্রস্তাব দেয়, তবে আমি এটি ভ্যানিলা জিসিসি দিয়ে কাজ করতে সক্ষম হয়েছি)। আপনি সংকলন করতে সক্ষম হতে চান এমন অতিরিক্ত ভাষাও বেছে নিয়েছেন (সি ++, ফোর্টরান, ...)
  11. সি-লাইব্রেরি মেনুতে যান এবং একটি চয়ন করুন। ডিফল্ট eglibc কিন্তু যে কেউ আমার জন্য ভালো বিল্ড করা হয়নি, তাই আমি ব্যবহার জন্য glibc (নবীনতম সংস্করণ)।

    • দ্রষ্টব্য: বিল্ড পদক্ষেপের সময় 13. উত্স ইনস্টল করা না থাকলে উদাহরণস্বরূপ বিল্ড করতে ব্যর্থ হতে পারে, কারণ উত্স থেকে সংগ্রহস্থল থেকে পুনরুদ্ধার করা যায় না
    • দ্রষ্টব্য: উদাহরণস্বরূপ , বিকাশের অভাবে সংস্করণটি 1.21.0 সংস্করণের অংশ নয় of উদাহরণস্বরূপ দীর্ঘডিফল্ট হিসাবে glibc ব্যবহার করুন crosstool-ng
  12. আপনার পরিবর্তনগুলি সংরক্ষণ করার সময় কনফিগারেশন সরঞ্জাম থেকে প্রস্থান করুন।
  13. ct-ng buildএকই ডিরেক্টরিতে চালান । কিছুক্ষণ অপেক্ষা করুন (আমার ক্ষেত্রে প্রায় 45 মিনিট) এবং আপনার ক্রস সংকলক প্রস্তুত হওয়া উচিত।

মনে হচ্ছে দুর্দান্ত কাজ!


বাহ, 45 মিনিট একটি দীর্ঘ সময়। আপনার সিস্টেমটি কত দ্রুত? আমি এখন অপেক্ষা করছি।
জিভিংস

ঠিক আছে, সম্ভবত এটি কিছুটা কম ছিল তবে এটি প্রথমে সমস্ত পূর্বশর্তগুলি এবং বাইন্টল এবং জিসিসি পরেও লিবিসি এবং লিবস্টডিসি ++ সংকলন করতে পারে, সুতরাং 45 মিনিট আমার কাছে যুক্তিসঙ্গত মনে হয়।

অবশ্যই কীভাবে এগুলি সঠিকভাবে ইনস্টল করা যায় এবং একবার অবশ্যই পরীক্ষিত পাথ আপডেট করা যায় সে সম্পর্কে বিশদ যুক্ত করতে পারি ?
অ্যালেক্স চেম্বারলাইন

2
এছাড়াও, আমি মনে করি আমাদের হার্ডফ্প ব্যবহার করা উচিত, যেমনটি আরপিআই সমর্থন করে।
অ্যালেক্স চেম্বারলাইন

আইআইআরসি হতে পারে তবে আর্চের জিসিসি সফটফাইপি দিয়ে কনফিগার করা হয়েছে। আমার এখনই এটি পরীক্ষা করার সময় নেই, তবে আমি উত্তর সম্প্রদায়টি উইকি তৈরি করেছি, তাই এটি উন্নত করতে নির্দ্বিধায় অনুভব করুন।

19

আমি সংকলন পেতে আগ্রহী এবং আমি সর্বশেষ এবং সেরা সরঞ্জাম ব্যবহার করতে চাই।

আসলে, সর্বশেষতম এবং সেরা সরঞ্জামগুলি নিজের দ্বারা তৈরি করার প্রয়োজন নেই। উপর রাস্পবেরী Pi টুল GitHub সংগ্রহস্থলের প্রয়োগ আপনি পাবেন X86_64এবং x686ক্রস সংকলন সফ্টওয়্যার জন্য toolchains।

আমি x86-linux64-cross-arm-linux-hardfpসরঞ্জামচেইনটি ব্যবহার করার পরামর্শ দিচ্ছি , কারণ এটি হার্ড ফ্লোটিং পয়েন্টের জন্য সংকলন করবে, যার ফলস্বরূপ আরও দ্রুততর সিস্টেম তৈরি হবে।

$ arm-bcm2708hardfp-linux-gnueabi-gcc --version

arm-bcm2708-linux-gnueabi-gcc-4.5.1 (Broadcom-2708) 4.5.1
Copyright (C) 2010 Free Software Foundation, Inc.

দ্রষ্টব্য: আপনি যদি কোনও বিদ্যমান কার্নেল ব্যবহার করছেন তবে আপনাকে কার্নেলের সাথে মেলে এমন সরঞ্জামচেনটি ব্যবহার করতে হবে। হার্ডএফপি অ্যাপ্লিকেশনগুলি সফ্টএফপি কার্নেলটিতে কাজ করবে না।


সরঞ্জামচেনটি ব্যবহার করতে সহজেই সংগ্রহস্থলটি পরীক্ষা করে দেখুন:

git clone https://github.com/raspberrypi/tools.git --depth 1

--depthপ্যারামিটার মানে হবে এই যে আপনি সংগ্রহস্থলের ইতিহাস পাশাপাশি ডাউনলোড করা জন্য (আমরা তা ব্যবহার করা অভ্যস্ত দেখাও) অপেক্ষা করতে হবে না।

তারপরে আপনার PATH ভেরিয়েবলে বাইনারি যুক্ত করুন:

export PATH=~/tools/arm-bcm2708/x86-linux64-cross-arm-linux-hardfp/bin:$PATH

বা পথ অবিচল রাখতে:

echo "export PATH=~/tools/arm-bcm2708/x86-linux64-cross-arm-linux-hardfp/bin:$PATH" >> ~/.bashrc
source ~/.bashrc

টুল চেইনটি সংকলন করতে আপনি এখন CROSS_COMPILEপ্যারামিটার যুক্ত করতে পারেন । উদাহরণস্বরূপ, যখন চলমান make:

make CROSS_COMPILE=arm-bcm2708hardfp-linux-gnueabi- 

বা এটিকে আরও সহজ করার জন্য, আপনি bashrcআবার পরিবর্তনশীলটি সংরক্ষণ করতে পারেন :

echo "export TARGET=arm-bcm2708hardfp-linux-gnueabi" >> ~/.bashrc
source ~/.bashrc

কম্পাইল করার সময় ভেরিয়েবলটি ব্যবহার করুন:

make CROSS_COMPILE=${TARGET}

1
এটি জিসিসি -৪.৪.১ বলে মনে হচ্ছে।

@ টিবার কি খারাপ?
জিভিংস

@ জিভিংস এটি পুরোপুরি প্রশ্নের উত্তর দেয় না!
অ্যালেক্স চেম্বারলাইন

1
আমি ডাউনভোটদের অস্বীকার করি। @ অ্যালেক্সচ্যাম্বারলাইন এটি আপনার নিজের সরঞ্জামচেন তৈরির সময় সাধ্যের জন্য একটি মূল্যবান বিকল্প পদ্ধতির পরামর্শ দেয়।
জিভিংস

2
@ জিভিংস: এটি খুব সহায়ক। ইতিমধ্যে এটি জিসিসি 4.7.1 (আমার কাছে সেরা ছিল) এবং ভাসমান পয়েন্টটি এখনই কাজ করে। টিবরের পোস্ট করা ক্রিসের মূল বিবরণটি ব্যবহার করে আমি ভাসমান পয়েন্টের কাজ করতে পারি না। অনেক ধন্যবাদ.

4

নোট করুন যে bit৪ বিট সিস্টেমে সেন্টো-এনজি ব্যবহার করে সিটি-এনজি ব্যবহার করে টুলচেনটি তৈরি করার সময় আমি স্থিতিশীলভাবে লিবিস্টডিসি ++ লিঙ্ক করার বিকল্পটি অনির্বাচিত করতে বাধ্য হয়েছিলাম কারণ স্ট্যাটিক লিঙ্কিং প্ল্যাটফর্মে সমর্থন করা হয়নি (দৃশ্যত)।

এছাড়াও, যদিও গিট সংগ্রহস্থল থেকে প্রিল বিল্ট টুলচেন ব্যবহার করা দুর্দান্ত হবে, সেই চেইনটি সেন্টোস 6.3-তে কাজ করবে বলে মনে হচ্ছে না - সম্ভবত এটি আরও আধুনিক সিস্টেম বা কোনও কিছুর জন্য নির্মিত। আমি সত্যিই এটিকে চালানোর চেষ্টা করিনি।



3

আপনার আরপিআইয়ের জন্য জিনিসগুলি সংকলনের জন্য যদি আপনি একটি দ্রুত হোস্টের কাছ থেকে উপকার পেতে চান তবে আমি ক্রুট এবং কিউইএমইউ এর মাধ্যমে ক্রস পরিবেশে কাজ করার পরামর্শ দিই। এটি কোনও ঝামেলা ছাড়াই ক্রস সংকলককে ছাড়িয়ে যায়।

কেবলমাত্র ডিবুস্ট্র্যাপ / মাল্টিস্ট্র্যাপ ব্যবহার করে একটি ডেবিয়ান ক্রস-এনভায়রনমেন্ট সেটআপ করুন

(অধ্যায় কিউইএমইউ / ডিবুটস্ট্র্যাপ পদ্ধতির দেখুন) এবং আপনার কাজ শেষ হয়েছে।


3

আপনি যদি ওএস এক্স থেকে ক্রস-সংকলন করতে যাচ্ছেন: এখানে দুর্দান্ত নিবন্ধটি রয়েছে (এবং আমি যে ওয়েবটিতে পেয়েছি তার মধ্যে কেবলমাত্র একটিই কাজ করছে)।

সর্বাধিক জিনিসটি হ'ল লেখক একটি সম্পূর্ণ প্রাকম্পম্পিল্ড সরঞ্জামচেন সরবরাহ করে, সুতরাং আপনাকে কেবল ডাউনলোড, আনজিপ এবং ডিএমজি চিত্র মাউন্ট করতে হবে। এবং এটি thats, আপনি ক্রস সংকলন করতে প্রস্তুত।


2

আপনি যদি উবুন্টু 64 বিট সংস্করণ এবং রাস্পবেরি পাই এসভিএন থেকে সরঞ্জামগুলি ইনস্টল করেন এবং আপনি ত্রুটিটি পেয়ে যাচ্ছেন:

-bash: /home/I/toolchain/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-c++: 
No such file or directory

শেষ ঘন্টা:

sudo apt-get install ia32-libs

1

কার্লসন-মিনোট ইনক। বেয়ার-মেটাল এবং জিএনইউ / লিনাক্স এআরএম উভয় লক্ষ্যবস্তুগুলির জন্য একটি পূর্বনির্মাণের সরঞ্জামচেন সরবরাহ করে। এই সরঞ্জামচেনটি ওএস এক্সে নির্মাণের জন্য স্থির গ্রাফিকস সোর্সারি লাইট টুলচেনের উপর ভিত্তি করে তৈরি করা হয়েছে এবং দেখুন See

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