জিসিসি নিজেই সি ++ তে লেখা হওয়ায় মুরগি ও ডিমের সমস্যা নেই?


10

৪.৮ প্রকাশের পর থেকে, সি ++ সংকলক জিসিসি (এর +++ অংশ) আর সি তে নয়, নিজে সি ++ তে লেখা আছে। আমি এই নিয়ে একটি অনুমানমূলক প্রশ্ন আছে।

আমি অবাক হই যে কীভাবে একটি নতুন প্ল্যাটফর্মে জিসিসির সি ++ কোড সংকলন করতে হবে যার কোনও সি ++ সংকলক এখনও নেই। অবশ্যই, আপনি অন্যান্য মেশিনে সংকলিত প্রি-বিল্ট বাইনারিগুলি ব্যবহার করতে পারেন। অথবা আপনি জিসিসির একটি পুরানো সংস্করণ ব্যবহার করতে পারেন যা সিতে লেখা ছিল এবং এটির সাথে বর্তমান সংস্করণটি সংকলন করতে পারে।

যাইহোক, পূর্বনির্মাণ বাইনারি এবং কেবলমাত্র নতুন সংস্করণ ছাড়াই, আপনি আটকে ছিলেন, তাই না? যদি তা না হয় তবে জিসিসি প্রকল্পের সি থেকে সি ++ এ স্যুইচ করে এই পরিস্থিতি নিয়ে কি অন্য প্রভাব রয়েছে?


3
আপনি এখানে কী জিজ্ঞাসা করছেন তা আমি নিশ্চিত নই, যদিও আপনি ক্রস সংকলন সম্পর্কে পড়তে চাইতে পারেন ।

5
পুরোপুরি নতুন প্ল্যাটফর্মের সি ++ সংকলক বা সি সংকলক থাকবে না। ক্রস সংকলন উত্তর।
ডক

1
আপনি সম্ভবত পড়া উচিত C থেকে জিসিসি বর্তমান আগ্রাসনকে ++, , সি সরানো হচ্ছে ++, এবং সম্ভবত আলোচনা জিসিসি এখন সি ++ বিল্ড করতে হবে ক্রেতা উপর। আমি নিশ্চিত নই যে gcc4.8 এর আগে স্বেচ্ছাসেবী অপারেটিং সিস্টেমের সাথে প্যাকেজ করা সি সংকলকটি তৈরি করা যেতে পারে (এবং এটি আপনাকে অনেকের উপরই C89 এ সীমাবদ্ধ রাখবে)।

2
এই প্রশ্নের জন্য আমি সি ++ এর জন্য বিশেষ কী পাই না, সমস্যাটি সি বা অন্য কোনও ভাষাতে রয়েছে, তাই না?
রিমকো গ্রিলিচ

উত্তর:


16

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


আসলে না. সেটি আর হয় না (এবং প্রশ্নটি নিয়ে বিষয়টি)। gccকেবলমাত্র সংকলক এসি দ্বারা তৈরি করা যায় না। তারা যে জিসিসি সংকলন করে তার সাথে একমাত্র গ্যারান্টি হ'ল জিসিসি সংস্করণ এন জিসিসি সংস্করণ এন -১ দিয়ে তৈরি করা যেতে পারে।

9
@ মিশেলটি: তবে জিসিসির একটি পূর্ববর্তী সংস্করণ সি সংকলক দিয়ে তৈরি করা যেতে পারে, যা পরে সি ++ এ লেখা পরবর্তী সংস্করণগুলি সংকলন করতে পারে, যা আমি বলেছিলাম।
ম্যাসন হুইলারের

আমিও প্রশ্ন প্রশ্ন নির্দেশ চাই: However, without prebuilt binaries and just the newest version, you were stuck, right? If not, are there other implications on this situation raised by the switch from C to C++ of the GCC project?- এটি presupposes আপনি না পূর্ববর্তী সংস্করণ এক্সেস আছে না এটা ++, কোডবেস জন্য C থেকে C থেকে সুইচ অন্যান্য প্রভাব মোকাবেলার নেই।

9

একটি সংকলক তৈরি করা যা একই ভাষায় লেখা হয় যা এটি সংকলন করে তাকে বুটস্ট্র্যাপিং বলে । উইকিপিডিয়া নিবন্ধটি বিভিন্নভাবে বর্ণনা করে যে একটি সংকলক বুটস্ট্র্যাপ করতে পারে।

আপনার সীমাবদ্ধতার পরিপ্রেক্ষিতে যে আপনার কাছে কেবলমাত্র 4.8 G ++ উত্স কোড এবং আপনার টার্গেট প্ল্যাটফর্মের জন্য কোনও পূর্ব-নির্মিত বাইনারি নেই (কোনও বিদ্যমান সি ++ সংকলক নেই), তবে জি ++ সংকলকটি বুটস্ট্র্যাপিং ক্রস সংকলনের মাধ্যমে করা যেতে পারে ।

ক্রস সংকলন ব্যবহার করে একটি সংকলক বুটস্ট্র্যাপ করার সময়, আপনি আপনার সংকলকটির বেশ কয়েকটি সংস্করণ তৈরি করেন

  1. আপনার পিসিতে আপনি একটি সি ++ সংকলক ইনস্টল করেন (যে কোনও সি ++ সংকলক হতে পারে, জি ++ হতে হবে না)
  2. সেই সংকলকটি ব্যবহার করে, আপনি একটি জি ++ ক্রস-সংকলক তৈরি করেন যা পিসিতে কার্যকর করতে পারে এবং লক্ষ্য প্ল্যাটফর্মের জন্য কোড উত্পন্ন করে
  3. আপনার সদ্য নির্মিত জি ++ ক্রস-সংকলকটি ব্যবহার করে আপনি একটি নেটিভ জি ++ সংকলক তৈরি করেন যা লক্ষ্য প্ল্যাটফর্মে চালাতে পারে এবং এর জন্য কোড তৈরি করতে পারে।
  4. তুমি পেরেছ. আপনি নতুন প্ল্যাটফর্মের জন্য একটি সি ++ সংকলক তৈরি করেছেন।

যদি আপনার কাছে প্রাথমিক পদক্ষেপগুলি সম্পাদন করার জন্য কোনও পিসি (বা অনুরূপ) না থাকে তবে আপনি অবশ্যই আটকে আছেন তবে সেই পরিস্থিতিতে থাকার এবং একটি সংকলক বুটস্ট্র্যাপ করার চেষ্টা করার সুযোগ নগণ্য।

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