উত্তর:
হিসাবে উল্লেখ করা এই ব্লগ পোস্টের এবং উল্লিখিত জিসিসি কনফিগার শর্তাদি , --target
শুধুমাত্র প্রযোজ্য যখন আপনি toolchains সংকলন করা হয়। আপনি যখন কোনও লাইব্রেরি বা বাইনারি ব্যবহার করেন তার সাধারণ ক্রস সংকলন করছেন
--build=the architecture of the build machine
--host=the architecture that you want the file to run on
তবে, আপনি যখন সরঞ্জামচেইনগুলি তৈরি করছেন তখন জিনিসগুলি আরও জটিল হয়ে উঠতে পারে। আমি মনে করি যে নিম্নলিখিতটি সঠিক (যদিও আমি বলতে পারি না যে আমি নিজে কখনও ক্রস-ডিবাগারটি কম্পাইল করেছি):
বলুন যে আপনার কাছে রয়েছে:
আপনি নিজের এম্বেড থাকা ডিভাইসটির সাথে চালানোর জন্য আপনার ডিবাগিং সার্ভারটি (যেমন: জিডিবার্সার) কনফিগার এবং তৈরি করতে পারেন
./configure --build=powerpc --host=mips
যাতে আপনি আপনার এম্বেড থাকা ডিভাইসে লাগাতে পারেন এবং ডিবাগিং শুরু করতে এবং 1234 পোর্টে শুনতে "gdbserver: 1234 a.out" চালাতে পারেন।
তারপরে আপনি আপনার ডিবাগিং ক্লায়েন্টটি (যা gdbserver এর সাথে সংযোগ স্থাপন করে এবং নিয়ন্ত্রণ করে) তৈরি করবে
./configure --build=powerpc --host=i686 --target=mips
যা আপনি আপনার x86 ল্যাপটপে অনুলিপি করবেন যাতে ক্ষেত্রটিতে আপনি আপনার আউটআউট প্রোগ্রামটি ডিবাগ করার জন্য "gdbclient এমবেডেড.ডভাইস: 1234" চালাতে পারেন।
এটি সমস্ত সংকলকগুলির ক্ষেত্রেও প্রযোজ্য যার জন্য আপনি উপরের জিসিসির লিঙ্কটি বা কানাডার ক্রস সংকলন সম্পর্কে এই বিভাগটি দেখতে চাইতে পারেন ।
এছাড়াও লক্ষ করুন যে, বাস্তবে, আপনি সম্ভবত বিল্ড, হোস্ট বা লক্ষ্যমাত্রা নির্দিষ্ট না দেখতে পারেন কারণ এই অটোকনফ ম্যানুয়াল পৃষ্ঠা অনুসারে , "হোস্টের জন্য ডিফল্ট পূর্বনির্ধারিত, নির্মাণের জন্য হোস্ট, এবং কনফিগারেশন এর ফলাফলের ভিত্তিতে তৈরি করা" build
এককথায়, কোডটি চালু করুন --build
, আর্কিটেকচার পরিবেশের --host
সাথে এটি চালান with--target
দ্রষ্টব্য:--target
কেবলমাত্র সংকলক (যেমন জিসিসি) তৈরি করার সময় আর্গুমেন্টটি অর্থবোধ করে। configure
জিসিসি নির্মাণের আগে যখন চলমান :
--build
: আপনি যে মেশিনটি তৈরি করছেন তা--host
: আপনি যে মেশিনটি তৈরি করছেন--target
: জিসিসি যে মেশিনটির জন্য বাইনারি তৈরি করবেথেকে জিসিসি ডকুমেন্টেশন ( হোস্ট / উদ্দিষ্ট নির্দিষ্ট ইনস্টলেশন নোট ):
যদি বিল্ড, হোস্ট এবং লক্ষ্য সব একই হয় তবে এটিকে স্থানীয় বলা হয়। যদি বিল্ড এবং হোস্ট একই হয় তবে লক্ষ্য পৃথক হয় তবে এটিকে ক্রস বলা হয়। যদি বিল্ড, হোস্ট এবং টার্গেট সবই আলাদা হয় তবে এটিকে কানাডিয়ান বলা হয় (কানাডার রাজনৈতিক দল এবং তত্কালীন সেই বিল্ডে কাজ করা ব্যক্তির ব্যাকগ্রাউন্ডের সাথে অস্পষ্ট কারণে কাজ করা)। হোস্ট এবং লক্ষ্য যদি একই হয় তবে বিল্ড আলাদা, আপনি আলাদা সিস্টেমের জন্য নেটিভ তৈরি করতে ক্রস-সংকলক ব্যবহার করছেন। কিছু লোক এটিকে হোস্ট-এক্স-হোস্ট, ক্রসড নেটিভ বা ক্রস-বিল্ট নেটিভ বলে। যদি বিল্ড এবং লক্ষ্য একই হয় তবে হোস্টটি আলাদা, আপনি যে মেশিনটি তৈরি করছেন তার কোড তৈরি করে এমন ক্রস সংকলক তৈরি করতে আপনি ক্রস সংকলক ব্যবহার করছেন। এটি বিরল, তাই এটি বর্ণনা করার কোনও সাধারণ উপায় নেই। এটিকে ক্রসব্যাক বলার প্রস্তাব রয়েছে।
--target
কোনও প্রকল্পের সাথে প্রাসঙ্গিক নয় যা নিজেই সংকলক নয়। সুতরাং এটি কেন একটি আদর্শ কনফিগার বিকল্প? বিভ্রান্তিকর।
configure
ঠিক ভাল এবং পরিষ্কার নকশার একটি চূড়া নয়; আমি অনুমান করি এটি কেবলমাত্র অ্যাপ্লিকেশন-নির্দিষ্ট বৈশিষ্ট্যের ক্রাইপের ফলাফল।
--host
এবং এমনকি ব্যবহার করবে--build
। আমি দুটি সি ++ প্রকল্প পেয়েছি এবং অ্যান্ড্রয়েডের জন্য এটি নির্মাণ করা অসম্ভব কারণ অটোটুলগুলি এত চ ** কেড আপ। এটি হোস্টের সরঞ্জামচেন ব্যবহার করে পরীক্ষা চালানোর উপর জোর দেয়।