সাইগউইন এবং মিনজিডব্লিউয়ের মধ্যে পার্থক্য কী?


656

আমি আমার সি ++ প্রকল্প ক্রস প্ল্যাটফর্ম তৈরি করতে চাই এবং আমি সাইগউইন / মিনজিডাব্লু ব্যবহার করার বিষয়ে বিবেচনা করছি। তবে তাদের মধ্যে পার্থক্য কী?

আরেকটি প্রশ্ন হ'ল আমি সাইগউইন / মিনজিডাব্লু ছাড়াই কোনও সিস্টেমে বাইনারি চালাতে সক্ষম হব কিনা?

উত্তর:


629

সরলীকরণ হিসাবে, এটি এর মতো:

  • সাইগউইনে কিছু সংকলন করুন এবং আপনি এটি সাইগউইনের জন্য সংকলন করছেন

  • MinGW এ কিছু সংকলন করুন এবং আপনি এটি উইন্ডোজের জন্য সংকলন করছেন

সাইগউইন সম্পর্কে

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

আপনি যখন নিজের সফ্টওয়্যার বিতরণ করবেন, তখন প্রাপককে এটিকে চালানো দরকার সাইগউইন রান-টাইম পরিবেশের সাথে (ফাইল দ্বারা সরবরাহিত cygwin1.dll)। আপনি এটি আপনার সফ্টওয়্যার দিয়ে বিতরণ করতে পারেন, তবে আপনার সফ্টওয়্যারটিকে এর ওপেন সোর্স লাইসেন্স মেনে চলতে হবে। এমন কি এমন ঘটনাও হতে পারে যে এমনকি আপনার সফ্টওয়্যারটিকে এটির সাথে সংযুক্ত করার জন্য, তবে dll আলাদাভাবে বিতরণ করার জন্য আপনাকে ওপেন সোর্স লাইসেন্সটি সম্মানের প্রয়োজন হতে পারে।

MinGW সম্পর্কে

মিনজিডাব্লুটির উদ্দেশ্য কেবল জিএনইউ সংকলক সরঞ্জামগুলির যেমন উইন্ডো, যেমন জিসিসি, মেক, ব্যাশ এবং এর মতো একটি উইন্ডোজ বন্দর হতে পারে। এটি ইউনিক্সের সাথে ব্যাপক সামঞ্জস্যতা অনুকরণ করার বা সরবরাহ করার চেষ্টা করে না, পরিবর্তে এটি জিসিসি (জিএনইউ সংকলক) এবং উইন্ডোজটিতে অল্প সংখ্যক অন্যান্য সরঞ্জাম ব্যবহার করার জন্য ন্যূনতম প্রয়োজনীয় পরিবেশ সরবরাহ করে। এতে সাইগউইনের মতো ইউনিক্স এমুলেশন স্তর নেই, তবে ফলস্বরূপ আপনার অ্যাপ্লিকেশনটির বিশেষত উইন্ডোজ চলতে সক্ষম হওয়ার জন্য প্রোগ্রামিং করা দরকার, যার অর্থ এটি যদি একটি আদর্শ ইউনিক্স পরিবেশে চলার উপর নির্ভর করার জন্য তৈরি করা হয়েছিল এবং উল্লেখযোগ্য পরিবর্তন হতে পারে এবং ইউনিক্স-নির্দিষ্ট বৈশিষ্ট্য যেমন পূর্বে উল্লিখিতগুলি ব্যবহার করে। ডিফল্টরূপে, মিনজিডাব্লু এর জিসিসিতে সংকলিত কোড .exe এবং .dll ফাইল সহ একটি স্থানীয় উইন্ডোজ এক্স 86 টার্গেটে সংকলন করবে, যদিও আপনি মূলত GNU সংকলক সরঞ্জাম স্যুট ব্যবহার করছেন তাই আপনি সঠিক সেটিংসের সাথে ক্রস-সংকলনও করতে পারেন।

MinGW মূলত মাইক্রোসফ্ট ভিজ্যুয়াল সি ++ সংকলক এবং এর সাথে যুক্ত লিঙ্কিং / মেক সরঞ্জামগুলির বিকল্প। কিছু ক্ষেত্রে মাইক্রোসফ্ট ভিজ্যুয়াল সি ++, সঠিক লাইব্রেরি সহ এবং কিছু ক্ষেত্রে অন্যান্য সংশোধন সহ সংকলনের উদ্দেশ্যে তৈরি এমন কিছু সংকলনের জন্য MinGW ব্যবহার করা সম্ভব হতে পারে।

উইন্ডোজ অপারেটিং সিস্টেমের সাথে কথোপকথনের জন্য মিনজিডাব্লুতে কয়েকটি বেসিক স্ট্যান্ডার্ড লাইব্রেরি অন্তর্ভুক্ত রয়েছে, তবে জিএনইউ সংকলক সংগ্রহের অন্তর্ভুক্ত সাধারণ স্ট্যান্ডার্ড লাইব্রেরিগুলির মতো এটি আপনার তৈরি সফ্টওয়্যারটিতে লাইসেন্সিং সীমাবদ্ধতা আরোপ করে না।

অপ্রয়োজনীয় সফ্টওয়্যার অ্যাপ্লিকেশনগুলির জন্য, যদি আপনি একটি বিস্তৃত ক্রস-প্ল্যাটফর্ম কাঠামো ব্যবহার না করেন তবে তাদের ক্রস প্ল্যাটফর্ম তৈরি করা যথেষ্ট চ্যালেঞ্জ হতে পারে। আমি যখন লিখেছিলাম তখন কিউটি ফ্রেমওয়ার্কটি এই উদ্দেশ্যে সর্বাধিক জনপ্রিয় ছিল, গ্রাফিকাল অ্যাপ্লিকেশনগুলি তৈরি করার অনুমতি দেয় যা উইন্ডোজ সহ অপারেটিং সিস্টেমগুলিতে কাজ করে, তবে অন্যান্য বিকল্পগুলিও রয়েছে। আপনি যদি প্রথম থেকেই এই জাতীয় কাঠামো ব্যবহার করেন তবে অন্য প্ল্যাটফর্মে পোর্ট করার সময় আপনি কেবল নিজের মাথা ব্যথা হ্রাস করতে পারবেন না তবে আপনি যদি একইভাবে লেখেন তবে আপনি সমস্ত প্ল্যাটফর্ম জুড়ে একই গ্রাফিক্যাল উইজেটস - উইন্ডোজ, মেনু এবং নিয়ন্ত্রণগুলি ব্যবহার করতে পারেন জিইউআই অ্যাপ্লিকেশন এবং সেগুলি ব্যবহারকারীর কাছে দেশীয় প্রদর্শিত হবে।


43
MinGW এর সাথে যে ব্যাশ আসে তা কোনও স্থানীয় উইন্ডোজ প্রোগ্রাম নয়। এটি নির্ভর করে এমএসওয়াইএস ডিএলএল, যা সাইগউইন ডিএলএলের একটি কাঁটাচামচ। অন্যান্য ইউনিক্স ইউটিলিটিগুলির অনেকগুলি যা মিনজিডব্লিউ / এমএসওয়াইএস এর সাথে আসে for MinGW gcc আসলে একটি দেশীয় প্রোগ্রাম যদিও। মেক একটি স্থানীয় সংস্করণ এবং একটি এমএসওয়াইএস উভয় উপলভ্য is
ak2

6
গতির দিক থেকে কোন পার্থক্য?
EKanadily

6
গতির পার্থক্য বেশিরভাগ পরিস্থিতিতে অজানা হবে । সাইগউইন সামঞ্জস্যতা স্তর দ্বারা সরবরাহিত বিমূর্ততার অতিরিক্ত স্তরের জিনিসগুলিকে কত মন্থর করে দেয় তাতে কোনও পার্থক্য নেমে আসবে। আই / ও-এর মতো জিনিসে এটির পরিমাপযোগ্য প্রভাব থাকতে পারে। উদাহরণস্বরূপ, অনেক দিন আগে, গিট কেবল সাইগউইনে উইন্ডোজে দৌড়েছিল এবং কারণ এটি বেশ কিছুটা ধীর ছিল। তারপরে আবার, যদি আপনি কোনও ফ্রেমওয়ার্ক ব্যবহার করে কোড করেন তবে এটি কোনও বিস্তৃতি স্তর যা কিছু কিছু হলেও ধীরে ধীরে কমিয়ে আনার সম্ভাবনা রয়েছে।
থোমাসরুতার

28
আমার নোট করা উচিত যে সাইগউইনের জন্য সংকলিত কোডটি এখনও স্থানীয় কোড - এটি জাভা বলার মতো দোভাষীর মাধ্যমে চালানোর দরকার নেই। এটি কেবলমাত্র যখন ডিস্ক / ফাইলের মতো নির্দিষ্ট ওএস বৈশিষ্ট্যগুলির সাথে ইন্ট্যারাক্ট করার প্রয়োজন হয় তখন এটি অন্য স্তরের মধ্য দিয়ে যায়।
থোমাস্রুটার

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

311

সাইগউইন একটি উইন্ডোজে সম্পূর্ণ ইউনিক্স / পসিক্স পরিবেশ তৈরি করার চেষ্টা। এটি করতে এটি বিভিন্ন ডিএলএল ব্যবহার করে। এই ডিএলএলগুলি জিপিএলভি 3 + দ্বারা আচ্ছাদিত থাকলেও তাদের লাইসেন্সটিতে একটি ব্যতিক্রম রয়েছে যা উত্পন্ন কাজকে জিপিএলভি 3 + দ্বারা আচ্ছাদিত করতে বাধ্য করে না। মিনজিডাব্লু হ'ল একটি সি / সি ++ সংকলক স্যুট যা আপনাকে যেমন ডিএলএলগুলির উপর নির্ভরশীলতা ছাড়াই উইন্ডোজ এক্সিকিউটেবলগুলি তৈরি করতে দেয় - আপনার কেবলমাত্র সাধারণ এমএসভিসি রানটাইম প্রয়োজন, যা কোনও সাধারণ মাইক্রোসফ্ট উইন্ডোজ ইনস্টলেশনের অংশ are

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


59
তবে আমি যদি ফ্রি নন-জিপিএল সফটওয়্যারটি প্রকাশ করতে চাই? দুঃখিত, আমি জিপিএল অনুরাগী নই, সবই।

19
@ ড্যান আপনার মিনিটডাব্লু ব্যবহার করে রানটাইম পুনরায় বিতরণ করার দরকার নেই - এটি উইন্ডোজের অংশ।

14
@ আক 2: এটি সত্য, তবে বিভ্রান্তিকর। সাইগুইন জিসিসি + সাইগউইন পরিবেশ (জিপিএল) সাইগউইন ডিএল-এর সাথে সংযুক্ত বাইনারি উত্পাদন করতে ডিফল্ট। প্লাটফর্ম সি লিবের সাথে যুক্ত বাইনারিগুলি উত্পাদন করতে ডিফল্ট মিংডব্লু + এমএসআই।
শান ম্যাকমিলান

4
@ ড্যানমোল্ডিং আপনি যদি মাইক্রোসফ্ট অনুরাগী না হন তবে আপনাকে প্রথমে উইন্ডোজের হয়ে বিকাশের জন্য এই অনুভূতিগুলি উপেক্ষা করতে হবে। ;-)
আর্দা Xi

14
@ অ্যানন "তবে আমি যদি নিখরচায় নন-জিপিএল সফ্টওয়্যার প্রকাশ করতে চাই?" .. সাইগউইনের এই লাইসেন্সিং শর্তে একটি বিশেষ ব্যতিক্রম রয়েছে যা আপনাকে অন্যান্য (জিপিএলবিহীন) মুক্ত-উত্স লাইসেন্সের অধীনে এর সাথে যুক্ত ফ্রি সফটওয়্যার বিতরণ করতে দেয়। এখানে "ওপেন সোর্স লাইসেন্সিং ব্যতিক্রম" দেখুন: সাইগউইন.লাইকসিং.এইচটিএমএল
স্টিভ কুক

138

অন্যান্য উত্তরগুলি যুক্ত করার জন্য, সাইগউইন MinGW লাইব্রেরি এবং শিরোনাম নিয়ে আসে এবং আপনি সিসিগুইন 1.ডিলের সাথে লিঙ্ক না করে সংকলন করতে পারেন -গনিসি-র সাথে এমএনও-সাইগউইন পতাকা ব্যবহার করে। আমি এটিকে প্লেইন মিনজিডাব্লু এবং এমএসওয়াইএস ব্যবহারের ক্ষেত্রে বেশি পছন্দ করি।


31
এটি সাইগউইন ১.7..6 নিয়ে আর কাজ করে না। জিসিসি: -ম্নো-সাইগউইন পতাকাটি সরানো হয়েছে; একটি মিংডিং-লক্ষ্যযুক্ত ক্রস-সংকলক ব্যবহার করুন।
সিগজুইস

2
@ সিগজুইস: সত্য, তবে পুরানো-সাইমনউইন পতাকা এখনও জিসিসি 3.x এর জন্য কাজ করে:gcc-3 -mno-cygwin
আম্রো

1
তাহলে এর অর্থ কি সাইগউইন হোস্টের কাছ থেকে মিংডব্লিউ টার্গেটে সংকলন করার জন্য মিংডাব্লু এর অফিসিয়াল সাইট থেকে মিংডাব্লুব্রাগুলি ডাউনলোড করা দরকার? অথবা এই লাইব্রেরিগুলি সাইগউইনের প্যাকেজ সিস্টেম থেকে ডাউনলোড করা যাবে?
সিএমসিডিগ্রাগনকাই

5
@ সিএমসিডিগ্রাগনকাই আপনি সাইগউইন সাইট থেকে সেটআপ ইউটিলিটি চালিয়ে এবং সেগুলি খুঁজে বের করে টিক দিয়ে মিংডব্লু সুসংগত সংকলকগুলি অর্জন করতে পারেন। সুতরাং যদিও জিসিসি আর আর মিংডাব্লু-সামঞ্জস্যপূর্ণ কোড উত্পন্ন করে না, আপনি একই ধরণের এক্সিকিউটেবলের জন্য মাইগডব্লিউ সংকলকটি এমএসএসের অধীনে তৈরি করতে সাইগউইনের মধ্যে একটি "মিংডাব্লু-জিসিসি" চালাতে পারেন (এটি পুরো নাম নয়)।
কার্ডিফ স্পেস ম্যান

9
কার্ডিফের সহায়ক জবাবটি সংশোধন করতে, সাইগউইনের MinGW প্যাকেজ এবং কমান্ডগুলির কিছুটা অস্পষ্ট নাম রয়েছে। মিনজিডাব্লু--৪ ইনস্টল করতে ( আপনি সবসময়ে যা চান তাই করুন, এই দিনগুলি ), mingw64-x86_64-gcc-coreসাইগউইন প্যাকেজটি ইনস্টল করুন । MinGW-64 এর পরে বিশ্রীভাবে নাম x86_64-w64-mingw32-gccকমান্ড হিসাবে উপলব্ধ হবে । দয়া করে Godশ্বর (গুলি), কেউ ইতিমধ্যে ইতিমধ্যে এই রক্তাক্ত জিনিসগুলির নাম একত্রিত করে।
সিসিল কারি

60

উইকিপিডিয়া এখানে একটি তুলনা করে ।

সাইগউইনের ওয়েবসাইট থেকে :

  • সাইগউইন উইন্ডোজের জন্য একটি লিনাক্সের মতো পরিবেশ। এটি দুটি অংশ নিয়ে গঠিত: একটি ডিএলএল (cygwin1.dll) যা লিনাক্স এপিআই এমুলেশন স্তর হিসাবে কাজ করে যা যথেষ্ট লিনাক্স এপিআই কার্যকারিতা সরবরাহ করে।
  • লিনাক্স চেহারা এবং অনুভূতি সরবরাহ করে এমন সরঞ্জামগুলির একটি সংকলন।

মিংসউ এর ওয়েবসাইট থেকে :

মিনজিডাব্লু ("উইন্ডোজের জন্য মিনিমালিস্টিক জিএনইউ") নিখরচায়ভাবে উপলভ্য এবং বিনামূল্যে বিতরণযোগ্য উইন্ডোজ নির্দিষ্ট হেডার ফাইল এবং আমদানি গ্রন্থাগারগুলির সংমিশ্রণ যা জিএনইউ টুলসেটের সাথে মিলিত হয় যা কোনও দেশীয় উইন্ডোজ প্রোগ্রাম তৈরি করতে দেয় যা কোনও তৃতীয় পক্ষের সি রানটাইম ডিএলএলে নির্ভর করে না native


47

সাইগউইন একটি ডিএলএল, সাইগউইন.ডিল, (বা ডিএলএলগুলির একটি সেট) ব্যবহার করে উইন্ডোজটিতে পসআইএক্স-এর মতো রানটাইম সরবরাহ করতে।

MinGW একটি স্থানীয় Win32 অ্যাপ্লিকেশনটিতে সংকলন করে।

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


42

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


প্রশ্ন # 1: আমি এমন একটি অ্যাপ্লিকেশন তৈরি করতে চাই যা আমি উত্স কোডটি একবার লিখি, এটি একবার সংকলন করে এটি কোনও প্ল্যাটফর্মে চালাও (যেমন উইন্ডোজ, লিনাক্স এবং ম্যাক ওএস এক্স…)।

উত্তর # 1: জাভাতে আপনার উত্স কোডটি লিখুন। উত্স কোডটি একবার সঙ্কলন করুন এবং এটিকে যে কোনও জায়গায় চালান।


প্রশ্ন # 2: আমি এমন একটি অ্যাপ্লিকেশন তৈরি করতে চাই যা আমি একবার সোর্স কোড লিখি তবে কোনও সমস্যা নেই যে আমি কোনও প্ল্যাটফর্মের জন্য সোর্স কোডটি আলাদাভাবে সংকলন করি (যেমন উইন্ডোজ, লিনাক্স এবং ম্যাক ওএস এক্স…)।

উত্তর # 2: সি বা সি ++ এ আপনার উত্স কোডটি লিখুন। কেবলমাত্র মানক শিরোনাম ফাইলগুলি ব্যবহার করুন। যে কোনও প্ল্যাটফর্মের জন্য উপযুক্ত সংকলক ব্যবহার করুন (যেমন উইন্ডোজের জন্য ভিজ্যুয়াল স্টুডিও, লিনাক্সের জন্য জিসিসি এবং ম্যাকের জন্য এক্সকোড)। মনে রাখবেন যে সমস্ত প্ল্যাটফর্মে আপনার উত্স কোডটি সফলভাবে সংকলন করতে আপনার কোনও উন্নত প্রোগ্রামিং বৈশিষ্ট্য ব্যবহার করা উচিত নয়। আপনি যদি কোন সি বা সি ++ স্ট্যান্ডার্ড ক্লাস বা ফাংশন ব্যবহার না করেন তবে আপনার উত্স কোডটি অন্য প্ল্যাটফর্মগুলিতে সংকলন করে না।


প্রশ্ন # 3: প্রশ্নের উত্তর 2 2, প্রতিটি প্ল্যাটফর্মের জন্য পৃথক সংকলক ব্যবহার করা কঠিন, কোনও ক্রস প্ল্যাটফর্ম সংকলক আছে কি?

উত্তর # 3: হ্যাঁ, জিসিসি সংকলকটি ব্যবহার করুন। এটি একটি ক্রস প্ল্যাটফর্ম সংকলক। উইন্ডোজে আপনার উত্স কোডটি সংকলনের জন্য MinGW ব্যবহার করুন যা উইন্ডোজের জন্য জিসিসি সংকলক সরবরাহ করে এবং আপনার উত্স কোডটি স্থানীয় উইন্ডোজ প্রোগ্রামে সংকলন করে iles সফলভাবে সমস্ত প্ল্যাটফর্মে আপনার উত্স কোডটি সংকলন করতে কোনও উন্নত প্রোগ্রামিং বৈশিষ্ট্য (উইন্ডোজ এপিআই এর মতো) ব্যবহার করবেন না। আপনি যদি উইন্ডোজ এপিআই ফাংশন ব্যবহার করেন তবে আপনার উত্স কোডটি অন্য প্ল্যাটফর্মগুলিতে সংকলন করে না।


প্রশ্ন # 4: সি বা সি ++ স্ট্যান্ডার্ড শিরোনাম ফাইলগুলি মাল্টি-থ্রেডিংয়ের মতো কোনও উন্নত প্রোগ্রামিং বৈশিষ্ট্য সরবরাহ করে না। আমি কি করতে পারি?

উত্তর # 4: আপনার পসিক্স (পোর্টেবল অপারেটিং সিস্টেম ইন্টারফেস [ইউনিক্সের জন্য]) মান ব্যবহার করা উচিত। এটি অনেক উন্নত প্রোগ্রামিং বৈশিষ্ট্য এবং সরঞ্জাম সরবরাহ করে। অনেক অপারেটিং সিস্টেম সম্পূর্ণ বা আংশিকভাবে পসিক্স সামঞ্জস্যপূর্ণ (যেমন ম্যাক ওএস এক্স, সোলারিস, বিএসডি / ওএস এবং ...)। কিছু অপারেটিং সিস্টেম POSIX সামঞ্জস্যপূর্ণ হিসাবে আনুষ্ঠানিকভাবে শংসাপত্রিত না হওয়ার পরে বৃহত অংশে (যেমন লিনাক্স, ফ্রিবিএসডি, ওপেনসোলারিস এবং ...) অনুসারে। সাইগউইন মাইক্রোসফ্ট উইন্ডোজের জন্য বেশিরভাগ পসিক্স-সম্মতিজনক বিকাশ এবং রান-টাইম পরিবেশ সরবরাহ করে।


এভাবে:

উইন্ডোজে জিসিসি ক্রস প্ল্যাটফর্ম সংকলকটির সুবিধা পেতে, মিনিজিডাব্লু ব্যবহার করুন।

উইন্ডোজে POSIX স্ট্যান্ডার্ড উন্নত প্রোগ্রামিং বৈশিষ্ট্য এবং সরঞ্জামগুলির সুবিধা ব্যবহার করতে, সাইগউইন ব্যবহার করুন।


4
আপনার ছোট্ট প্রায়শই জিজ্ঞাসাবাদ সম্পর্কে: 1) আপনার অধিকার, যদি আপনার কোথাও কোথাও চলতে থাকে এবং সংকলনের প্রয়োজন না হয় তবে জাভা জাতীয় কিছু চয়ন করুন (এছাড়াও পাইথন, পারল, রুবি এবং স্ক্রিপ্টের বাকী অংশগুলি ভুলে যাবেন না) ২) এটি সি এর ক্ষেত্রে কিছুটা ভুল, যেহেতু সি এর সমস্ত সংকলক এটি খুব ভাল সমর্থন করে support 3) আপনি এখনও win32 এপিআই ব্যবহার করতে পারেন, তবে আপনাকে এটি একটি পোর্টেবিলিটি স্তরতে আবৃত করতে হবে, যাতে এটি কেবল একটি ডিজাইনের সমস্যা।
কোयोট 21

1
৪) এটি সম্পূর্ণরূপে ভুল, কারণ আমি উপরোক্ত কারণগুলিতে, যেহেতু পসিক্স কেবলমাত্র অন্য এপিআই, আপনি যদি এতটা পসিক্সকে ডিফেন্ড করেন তবে আপনারও জানা উচিত যে ইউনিক্সকেও পসিক্সের একই সেটটি প্রয়োগ করার দরকার নেই, তবে কীভাবে আপনি কি এটি মোকাবেলা করেন? রিয়েল টাইম পসিক্স এপিআই মনে আসে। এবং এটি আপনাকে উপসংহারটিকে সম্পূর্ণ জাল এবং ভুল করে তোলে, কারণ উইন্ডোতে কোনও কিছুর জন্য আপনার পসিক্সের প্রয়োজন নেই, আপনি কেবল উইন 32 এপিআই ব্যবহার করতে পারেন। অথবা আপনি কীভাবে মনে করেন যে Qt, GTK এবং WxWidgets ক্রস-প্ল্যাটফর্ম হওয়ার উপায় খুঁজে পেয়েছে, আমি অনুমান করি যে তাদের সকলকে উইন্ডোতে সাইগউইন ব্যবহার করতে হবে। আপনার উত্তরের জন্য ভোট।
কোयोট 21

4
আমি আপনার যুক্তি বুঝতে পারছি না, @ কোয়েট 21। আপনি কি বলছেন যে পসআইএক্স ক্রস-প্ল্যাটফর্ম বিকাশের জন্য অনুপযুক্ত? আপনি কি বলছেন যে একাধিক প্ল্যাটফর্মের জন্য সি / সি ++ তে কোড লেখার একমাত্র উপযুক্ত উপায়টি আপনি সমর্থন করতে চান এমন প্রতিটি প্ল্যাটফর্মের জন্য আপনার নিজস্ব সামঞ্জস্যতা স্তরটি লিখেছেন? আমি পসিক্স দিয়ে শুরু করার পরামর্শটি দিয়ে কোনও ভুল দেখতে পাচ্ছি না। এটি আপনাকে কতদূর পেতে পারে এবং একটি বিস্তৃত সামঞ্জস্যতা স্তর সমাধানের প্রয়োজন হবে কিনা তা আপনাকে দেখতে হবে। বড় সামঞ্জস্যের স্তরগুলি আদর্শ নয়। অন্যথায় বলার অর্থ হল পসিক্স একটি সম্পূর্ণ ব্যর্থতা।
ডেভিড গ্লাডফেল্টার

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

1
"আপনার প্ল্যাটফর্মগুলিতে সফলভাবে আপনার উত্স কোডটি সংকলনের জন্য কোনও উন্নত প্রোগ্রামিং বৈশিষ্ট্য ব্যবহার করা উচিত নয়।" "অ্যাডভান্সড প্রোগ্রামিং বৈশিষ্ট্যগুলি" দ্বারা আপনি কী বোঝাতে চেয়েছিলেন তা সত্যই আপনাকে স্পষ্ট করে তুলতে হবে। পরবর্তী লাইনের উপর ভিত্তি করে, আমার ধারণা আপনি আসলে প্ল্যাটফর্ম-নির্দিষ্ট বৈশিষ্ট্যগুলি বোঝাচ্ছেন । আপনি যদি আধুনিক ভাষার বৈশিষ্ট্যগুলি বোঝাতে চেয়েছিলেন তবে তা না, কারণ "সমস্ত [প্রধান] প্ল্যাটফর্ম" এর জন্য উপযুক্ত সংকলক উপস্থিত রয়েছে এবং যাদের সংকলক বা গ্রন্থাগারগুলি এখনও পিছিয়ে আছে তাদের সমর্থন করার জন্য আমাদের নিজেকে বৈশিষ্ট্য থেকে বঞ্চিত করা উচিত নয়। একটি শালীন সংকলক, স্ট্যান্ডার্ড সি / ++ এবং ক্রস প্ল্যাটফর্ম লাইব্রেরি সহ আমরা প্রচুর উন্নত হতে পারি ।
আন্ডারস্কোর_ডি

34

সি প্রোগ্রামের পোর্টিংয়ের দৃষ্টিকোণ থেকে এটি বোঝার একটি ভাল উপায় একটি উদাহরণ নেওয়া:

#include <sys/stat.h>
#include <stdlib.h>

int main(void)
{
   struct stat stbuf;
   stat("c:foo.txt", &stbuf);
   system("command");
   printf("Hello, World\n");
   return 0;
}

যদি আমরা পরিবর্তিত statহয়ে _statথাকি, আমরা মাইক্রোসফ্ট ভিজ্যুয়াল সি দিয়ে এই প্রোগ্রামটি সংকলন করতে পারি আমরা এই প্রোগ্রামটি মিনজিডাব্লু এবং সাইগউইনের সাথেও সংকলন করতে পারি।

মাইক্রোসফ্ট ভিজ্যুয়াল সি এর অধীনে প্রোগ্রামটি একটি এমএসভিসি পুনরায় বিতরণযোগ্য রান-টাইম লাইব্রেরির সাথে যুক্ত হবে: mxvcrtnn.dllযেখানে nnকিছু সংস্করণ প্রত্যয় রয়েছে। এই প্রোগ্রামটি শিপ করতে আমাদের সেই ডিএলএল অন্তর্ভুক্ত করতে হবে। যে ডিএলএল সরবরাহ করে _stat, systemএবং printf। (রান-টাইমকে স্থিতিশীলভাবে সংযুক্ত করার বিকল্পও আমাদের কাছে রয়েছে))

মিনজিডাব্লু এর অধীনে প্রোগ্রামটি যুক্ত হবে msvcrt.dllযা একটি অভ্যন্তরীণ, অনিবন্ধিত, রূপান্তরিত গ্রন্থাগার যা উইন্ডোজের অংশ এবং অ্যাপ্লিকেশন ব্যবহারের সীমাবদ্ধ নয়। সেই লাইব্রেরিটি মূলত উইন্ডোজ নিজেই ব্যবহারের জন্য এমএস ভিজ্যুয়াল সি থেকে পুনরায় বিতরণযোগ্য রান-টাইম লাইব্রেরির কাঁটাচামচ।

এই উভয়ের অধীনে, প্রোগ্রামটির একই আচরণ থাকবে:

  • statফাংশন উদাহরণস্বরূপ খুব সীমিত তথ্য-কোনো দরকারী অনুমতি বা inode সংখ্যা ফিরে আসবে।
  • c:file.txtড্রাইভের সাথে সম্পর্কিত বর্তমান ওয়ার্কিং ডিরেক্টরি অনুসারে পাথটি সমাধান করা হয়েছে c:
  • systemcmd.exe /cবহিরাগত কমান্ড চালানোর জন্য ব্যবহার করে ।

আমরা সাইগউইনের অধীনে প্রোগ্রামটিও সংকলন করতে পারি। একইভাবে এমএস ভিজ্যুয়াল সি দ্বারা ব্যবহৃত পুনরায় বিতরণযোগ্য রান-টাইমের সাথে সাইগউইন প্রোগ্রামটি সাইগউইনের রান-টাইম লাইব্রেরিগুলির সাথে যুক্ত হবে: cygwin1.dll(সাইগউইন যথাযথ) এবং cyggcc_s-1.dll(জিসিসি রান-টাইম সমর্থন)। যেহেতু সাইগউইন এখন এলজিপিএলের অধীনে, আমরা জিপিএল-সামঞ্জস্যপূর্ণ ফ্রি সফ্টওয়্যার না হলেও আমাদের প্রোগ্রামটি প্যাকেজ করতে পারি এবং প্রোগ্রামটি শিপড করতে পারি।

সাইগউইনের অধীনে গ্রন্থাগারের ফাংশনগুলি আলাদাভাবে আচরণ করবে:

  • statফাংশন ক্ষেত্র অধিকাংশ অর্থপূর্ণ মান ফিরে, সমৃদ্ধ কার্যকারিতা থাকে।
  • c:file.txtকোনও ড্রাইভ লেটার রেফারেন্স যুক্ত হিসাবে পাথটি মোটেই বোঝা যায় না, যেহেতু c:একটি স্ল্যাশ অনুসরণ করে না। কোলনটিকে নামের অংশ হিসাবে বিবেচনা করা হয় এবং কোনওভাবে এটিতে ম্যাঙ্গেল করা হয়। সাইগউইনে কোনও ভলিউম বা ড্রাইভের বিরুদ্ধে আপেক্ষিক পথের কোনও ধারণা নেই, কোনও "বর্তমানে লগড ড্রাইভ" ধারণা নেই, এবং কোনও ড্রাইভের বর্তমান ওয়ার্কিং ডিরেক্টরি নেই।
  • systemফাংশন ব্যবহার করার চেষ্টা করে /bin/sh -cব্যাখ্যাকারী। সাইগউইন /আপনার এক্সিকিউটেবলের অবস্থান অনুযায়ী পাথটি সমাধান করবে এবং আপনার এক্সিকিউটেবলের সাথে কোনও sh.exeপ্রোগ্রামের সহ-অবস্থানের আশা করবে ।

সাইগউইন এবং মিনজিডাব্লু উভয়ই আপনাকে উইন 32 ফাংশনগুলি ব্যবহার করতে দেয়। আপনি যদি কল করতে চান MessageBoxবা CreateProcess, আপনি এটি করতে পারেন। আপনি gcc -mwindowsমিনজিডাব্লু এবং সাইগউইনের অধীনে সহজেই এমন একটি প্রোগ্রাম তৈরি করতে পারেন যা ব্যবহার করে কনসোল উইন্ডোটির প্রয়োজন হয় না ।

সাইগউইন কঠোরভাবে পসিক্স নন। উইন্ডোজ এপিআইতে অ্যাক্সেস সরবরাহ করার পাশাপাশি এটি কিছু মাইক্রোসফ্ট সি ফাংশনগুলির (নিজস্ব সামগ্রী msvcrt.dllযা পুনরায় বিতরণযোগ্য msvcrtnn.dllরান- টাইমে পাওয়া যায়) এর নিজস্ব প্রয়োগও সরবরাহ করে । এর উদাহরণ যেমন spawn*ফাংশনগুলির পরিবার spawnvp। এগুলি সাইগউইনের পরিবর্তে forkএবং ব্যবহার করার জন্য একটি ভাল ধারণা, execযেহেতু তারা উইন্ডোজ প্রক্রিয়া তৈরির মডেলটির আরও ম্যাপ করে যার কোনও ধারণা নেই fork

এভাবে:

  • সাইগ্রউইন প্রোগ্রামগুলি এমএস ভিজ্যুয়াল সি প্রোগ্রামগুলির চেয়ে কম গ্রন্থাগারগুলির সহযোগী প্রয়োজনের তুলনায় "নেটিভ" নয়। উইন্ডোজে প্রোগ্রামিং ল্যাঙ্গুয়েজ বাস্তবায়নগুলি তাদের নিজস্ব রান-টাইম এমনকি সি ভাষা বাস্তবায়ন সরবরাহ করবে বলে আশা করা হচ্ছে। জনসাধারণের ব্যবহারের জন্য উইন্ডোজে কোনও "libc" নেই।

  • মিনজিডাব্লু এর তৃতীয় পক্ষের ডিএলএল প্রয়োজন নেই তা আসলে একটি অসুবিধা; এটি ভিজ্যুয়াল সি রান-টাইমের একটি অনিবন্ধিত, উইন্ডোজ-অভ্যন্তরীণ কাঁটাচামচ নির্ভর করে। MinGW এটি করে কারণ জিপিএল সিস্টেম লাইব্রেরি ব্যতিক্রমগুলি প্রযোজ্য msvcrt.dll, যার অর্থ জিপিএল-এড প্রোগ্রামগুলি কমপ্লেক্স করে মিনজিডাব্লু দিয়ে পুনরায় বিতরণ করা যেতে পারে।

  • এর তুলনায় msvcrt.dllপসিক্সের জন্য তার আরও বিস্তৃত এবং গভীর সমর্থনের কারণে সাইগউইন পসিক্স প্রোগ্রামগুলির পোর্টিংয়ের জন্য সর্বোত্তম পরিবেশ environment যেহেতু এটি এখন এলজিপিএলের অধীনে, এটি সমস্ত ধরণের লাইসেন্স, খোলা বা বন্ধ উত্স সহ অ্যাপ্লিকেশনগুলিকে পুনরায় বিতরণ করার অনুমতি দেয়। সাইগউইনে এমনকি ভিটি 100 এমুলেশন রয়েছে এবং termiosএটি মাইক্রোসফ্ট কনসোলের সাথে কাজ করে! একটি পসিক্স অ্যাপ্লিকেশন যা কাঁচা মোড tcsetattrসেটআপ করে এবং কার্সার নিয়ন্ত্রণ করতে ভিটি 100 কোড ব্যবহার করে cmd.exeউইন্ডোতে ডানদিকে কাজ করবে । যতক্ষণ না শেষ ব্যবহারকারীর সম্পর্কিত, এটি কনসোলটি নিয়ন্ত্রণ করতে Win32 কল করা একটি দেশীয় কনসোল অ্যাপ্লিকেশন।

যাহোক:

  • নেটিভ উইন্ডোজ বিকাশের সরঞ্জাম হিসাবে, সাইগউইনের কিছু কায়দায় রয়েছে, যেমন উইন্ডোতে বিদেশী পাথ পরিচালনা, কিছু হার্ড-কোডেড পাথের মতো নির্ভরতা /bin/shএবং অন্যান্য সমস্যা। এই পার্থক্যগুলি হ'ল সাইগউইন প্রোগ্রামগুলি "অ-নেটিভ" রেন্ডার করে। যদি কোনও প্রোগ্রাম আর্গুমেন্ট হিসাবে কোনও পথ নেয় বা একটি ডায়লগ বাক্স থেকে ইনপুট নেয়, উইন্ডোজ ব্যবহারকারীরা আশা করেন যে সেই পথটি অন্য উইন্ডোজ প্রোগ্রামগুলির মতো একইভাবে কাজ করবে। যদি এটি সেভাবে কাজ না করে, তবে এটি একটি সমস্যা।

প্লাগ: এলজিপিএল ঘোষণার অল্প সময়ের পরে, আমি সাইগউইন ডিএলএলের একটি কাঁটাচামচ সরবরাহের জন্য সাইগনাল ( সাইগউইন নেটিভ অ্যাপ্লিকেশন লাইব্রেরি) প্রকল্প শুরু করেছি যার লক্ষ্য এই সমস্যাগুলি সমাধান করা। প্রোগ্রামগুলি সাইগউইনের অধীনে বিকাশিত হতে পারে এবং তারপরে cygwin1.dllপুনরায় ব্যয় না করে সিগনাল সংস্করণ দিয়ে স্থাপন করা যেতে পারে । এই গ্রন্থাগারটির উন্নতির সাথে সাথে এটি ধীরে ধীরে MinGW এর প্রয়োজনীয়তা দূর করবে।

সিগনাল যখন পাথ হ্যান্ডলিংয়ের সমস্যা সমাধান করে, তখন সিগনালের সাথে উইন্ডোজ অ্যাপ্লিকেশন হিসাবে পাঠানো হলে উইন্ডোজ পাথের সাথে কাজ করে এমন একক এক্সিকিউটেবল বিকাশ করা সম্ভব হবে এবং আপনার সাইগউইনের /usr/binঅধীনে ইনস্টল করার সময় সিগউইন পাথগুলির সাথে নির্বিঘ্নে কাজ করে । সাইগউইনের অধীনে নির্বাহী স্বচ্ছতার মতো পথ নিয়ে কাজ করবে /cygdrive/c/Users/bob। নেটিভ ডিপ্লোয়মেন্টে যেখানে এটি সিগনাল সংস্করণের সাথে সংযোগ স্থাপন করছে সেখানে cygwin1.dllসেই পথটি কোনও অর্থ দেবে না, তবে এটি বুঝতে হবে c:foo.txt


2
দুর্দান্ত উত্তর। 3 টি পরিবেশের প্রতিটিটিতে একই টুকরো কোড সংকলিত, লিঙ্কযুক্ত এবং কার্যকর করা হলে কী ঘটে তা দেখানো কী এবং তা পার্থক্যগুলি স্পষ্ট করে।
ড্রললি

@ কাজ কীভাবে এই উন্নয়ন চলছে? শব্দ পুনরুক্তি করা হলেও এটি কমপক্ষে এক বছর আগের থেকে মৃত মনে হচ্ছে। লোকেরা সাহায্য করতে এবং অংশ নিতে পারে তাই আপনি কেন গিটহাব ব্যবহার করবেন না?
not2qubit

2
@ not2qubit আমার মনে হয় আমার প্রকল্পগুলি যখন আমার নিজের সার্ভারে হোস্ট করা হয় যা আমি নিজেকে নিয়ন্ত্রণ করি তখন আমার উপর আরও ভাল নিয়ন্ত্রণ থাকে। আমি গিট ব্যবহার করছি; সংগ্রহস্থলটি টানতে পারে। আমি ই-মেইলে টানার অনুরোধগুলি গ্রহণ করতে পারি (যেমন লিনাস টোরভাল্ডস তাদের নকশা করেছেন)। যিনি রক্ষণাবেক্ষণকারী-স্তরের অবদানকারী হয়ে ওঠেন তাকে আমি প্রতিশ্রুতিবদ্ধ অধিকার সহ অ্যাকাউন্টও দিতে পারি। সিগন্যাল ভাল কাজ করে; আমি নিয়মিত এটি টিএক্সআর ভাষার নতুন প্রকাশের উইন্ডোজ সংস্করণগুলিতে বান্ডিল করছি। 2019 এর গোড়ার দিকে আমি সিগন্যালটিকে নতুন সাইগউইন বেসলাইনটিতে পুনরায় শোধ করব
কাজ

@ not2qubit নোট করুন যে সিংগাল এজেন্ডার সমস্ত 17 টি সমস্যা সম্বোধন করা হয়েছে। কেউই কোনও নতুন প্রয়োজনীয়তা প্রস্তাব করেনি, বা 17 টি কীভাবে পরিচালিত হয় সে সম্পর্কে কোনও অভিযোগ করেনি। সুতরাং নতুন সাইগউইনকে ছাড় দেওয়া ছাড়া আর কোনও বিকাশের প্রয়োজন নেই, যা অত্যন্ত জরুরি নয়।
কাজ

27

উইকিপিডিয়া বলেছেন :

MinGWসংস্করণ 1.3.3 থেকে কাঁটাচামচ করা Cygwin। উভয় যদিও Cygwin এবং MinGWবন্দর ব্যবহার করা যেতে পারে UNIXসফটওয়্যার Windows, তারা বিভিন্ন পন্থা আছে: Cygwinসম্পূর্ণ প্রদানের লক্ষ্যে POSIX layer বিভিন্ন ব্যবস্থা কল ও লাইব্রেরি যে উপস্থিত এর emulations প্রদান করে Linux, UNIXএবং BSDরূপগুলো। POSIX layer উপরের উপর সঞ্চালিত হয় Windows, যেখানে প্রয়োজন সামঞ্জস্যের জন্য কর্মক্ষমতা sacrificing। তদনুসারে, এই পদ্ধতির জন্য কোনও কপিলিফ্টেড সামঞ্জস্য লাইব্রেরির শীর্ষে চলার জন্য Windowsলিখিত প্রোগ্রামগুলি প্রয়োজন যা প্রোগ্রামের সাথে প্রোগ্রামের সাথে Cygwinবিতরণ করা আবশ্যক source codeMinGWপ্রত্যক্ষ মাধ্যমে দেশীয় কার্যকারিতা এবং কর্মক্ষমতা প্রদান লক্ষ্য Windows API calls। অপছন্দ Cygwin,MinGWএকটি সামঞ্জস্যতা স্তর প্রয়োজন হয় না DLLএবং এইভাবে প্রোগ্রামগুলি বিতরণ করার প্রয়োজন হয় না source code

কারণ MinGWনির্ভরশীল Windows API calls, এটি একটি পূর্ণ সরবরাহ করতে পারে না POSIX API; এটি UNIX applicationsসংকলিত হতে পারে এমন কিছু সংকলন করতে অক্ষম Cygwin। বিশেষ করে, এই অ্যাপ্লিকেশন প্রয়োজন প্রযোজ্য POSIXমত কার্যকারিতা fork(), mmap()অথবা ioctl()এবং যারা যে আশা মধ্যে চালানো যাবে POSIX environment। একটি ব্যবহার করে লেখা অ্যাপ্লিকেশন cross-platform libraryযে নিজেই বৈশিষ্ট্যসমূহ নিয়ে আসা হয়েছে MinGWযেমন, এই ধরনের SDL, wxWidgets, Qt, অথবা GTK+, সাধারণত যেমন সহজেই কম্পাইল হবে MinGWতারা would হিসাবে Cygwin

কম্পিউটারের রেজিস্ট্রি বা ফাইলগুলিতে প্রবেশ ছাড়াই অপসারণযোগ্য মিডিয়াতে লোড করা যায় এমন একটি ছোট, স্ব-অন্তর্ভুক্ত পরিবেশের সংমিশ্রণ MinGWএবং MSYSসরবরাহ করে। Cygwinপোর্টেবল একই বৈশিষ্ট্য সরবরাহ করে। আরও কার্যকারিতা সরবরাহ করে, Cygwin ইনস্টল এবং বজায় রাখা আরও জটিল হয়ে ওঠে।

এটি cross-compile Windows applicationsসঙ্গে সম্ভব MinGW-GCC under POSIX systems। এর অর্থ হ'ল ডেভেলপারদের এমন MSYSসফ্টওয়্যার সংকলন করার জন্য উইন্ডোজ ইনস্টলেশন দরকার নেই যা চালানো Windowsছাড়া চলবে Cygwin


2
এটি অবশ্যই "ইনস্টল এবং বজায় রাখা আরও জটিল নয় " ! apt-cygডাব্লুএসএল এর অধীনে অ্যাপ্ট ব্যবহার করার চেয়ে এটি আরও সহজ হিসাবে ব্যবহার করুন
not2qubit

14

এটি অ্যান্ড টি এর ইউ / উইন সফটওয়্যারটিকে উপেক্ষা করবেন না , যা আপনাকে উইন্ডোজে ইউনিক্স অ্যাপ্লিকেশনগুলি সংকলন করতে সহায়তা করার জন্য ডিজাইন করা হয়েছে (সর্বশেষ সংস্করণ - 2012-08-06; এক্লিপস পাবলিক লাইসেন্স, সংস্করণ 1.0) ব্যবহার করে।

সাইগউইনের মতো তাদেরও লাইব্রেরির বিরুদ্ধে দৌড়াতে হবে; তাদের ক্ষেত্রে POSIX.DLL। এটিএন্ডটি অবধি ছেলেরা ভয়ঙ্কর প্রকৌশলী (একই গ্রুপ যা আপনাকে ksh এবং বিন্দু এনেছে ) এবং তাদের স্টাফগুলি পরীক্ষা করে দেখার মতো।


4
বাহ, সেগুলি কিছু খারাপ ওয়েব পৃষ্ঠা। শেষ পর্যন্ত আমি www2.research.att.com/sw/download এ ডাউনলোড লিঙ্কটি সন্ধান করতে পেরেছি , তবে প্রকল্প সম্পর্কে কোনও অনলাইন ডকুমেন্টেশন বা তথ্য নেই।
ফ্যানটিয়াস

1
যদিও তথ্যটি দরকারী, আমি মনে করি এটি এই প্রশ্নের চেয়ে মিংডাব্লু বা সাইগউইনের বিকল্পগুলির একটি প্রশ্নের উত্তর হতে পারে।
বিবেক

12

অন্যান্য উত্তর ইতিমধ্যে লক্ষ্য হিট। আমি কেবল দ্রুত ধরা দেওয়ার জন্য একটি চিত্র যোগ করতে চাই।

এখানে চিত্র বর্ণনা লিখুন


11

সাইগউইন পুরো পসিক্স পরিবেশকে এমুলেট করে, যখন মিনজিডাব্লু শুধুমাত্র সংকলনের জন্য ন্যূনতম সরঞ্জাম সেট (নেটিভ উইন অ্যাপ্লিকেশনটি সংকলন করে।) সুতরাং আপনি যদি নিজের প্রকল্পটি ক্রস-প্ল্যাটফর্ম করতে চান তবে উভয়ের মধ্যে পছন্দটি সুস্পষ্ট, মিনিজিডব্লু।

যদিও আপনি উইন্ডোজটিতে ভিএস, লিনাক্স / ইউনিসিসে জিসিসি ব্যবহার বিবেচনা করতে পারেন। বেশিরভাগ মুক্ত উত্স প্রকল্পগুলি তা করে (যেমন ফায়ারফক্স বা পাইথন)।


"সর্বাধিক" মনে হয় এখানে অর্থহীন কণ্ঠস্বর শব্দের মতো, বিশেষত মাত্র 2 টি উদাহরণ এবং কোনও পরিসংখ্যান নেই। অনেক এফওএসএস প্রকল্প একটি টোকেন অঙ্গভঙ্গি হিসাবে একটি ভিএস প্রকল্পের ফাইলটিতে ফেলে দেয়, আমার সন্দেহ হয় আরও সঠিক। তবে যদি অতীতের অভিজ্ঞতাটি যদি কিছু যায় তবে জিএসসি বা কলং সাধারণত সুরক্ষিত হয় কারণ ভাষার মানগুলি বিকশিত হওয়ার সাথে সাথে ভিএস পিছিয়ে যায়।
আন্ডারস্কোর_

এটি ২০০৯ সালের একটি উত্তর Now আজকাল জিনিসগুলি জিসিসির পক্ষে আরও নির্মল দেখাচ্ছে। "সর্বাধিক" হিসাবে, যদি আপনি প্রভাব দ্বারা পরিমাপ করেন তবে কেবল ফায়ারফক্স এবং ক্রোমের মধ্যে অন্য কোনও কিছুর চেয়ে বেশি ব্যবহারকারী রয়েছে।
ভের্টেক

2
আমি যখন উত্তর দিয়েছি তখন থেকে কী পরিবর্তন হয়েছে তা হ'ল এটি এখন clangএকটি কার্যকর পারাপার প্ল্যাটফর্ম সমাধান solution
ভের্টেক

9

নোট করুন যে ইউটিলিটি আচরণটি সত্যই দুজনের মধ্যে পৃথক হতে পারে।

উদাহরণস্বরূপ, সাইগউইন টার কাঁটাচামচ করতে পারে - কারণ কাঁটাচামচ () ডিএলএল-তে সমর্থিত - যেখানে মিংগ ভার্শনটি পারে না। উত্স থেকে mysql সংকলনের চেষ্টা করার সময় এটি একটি সমস্যা a


এই কারণেই পুরোপুরি সজ্জিত MinGW- সক্ষম পরিবেশগুলি, যেমন এমএসওয়াইএস 2, বিল্ডিংয়ের সময় নিম্ন স্তরের বাদাম এবং টুলচেনগুলির বোল্টগুলির জন্য একটি সাইগউইন বা অন্যান্য সম্পূর্ণ পসিক্স-সামঞ্জস্যপূর্ণ স্তর সরবরাহ করে। তারপরে আসল সংকলন এবং লিঙ্কিং সম্পূর্ণ নেটিভ মিনিজিডাব্লু সংকলক পর্যন্ত ছেড়ে যায়। এমএসওয়াইএস 2 সত্যই ঝরঝরে।
আন্ডারস্কোর_ডি

9

বাণিজ্যিক / মালিকানাধীন / নন-ওপেন সোর্স অ্যাপ্লিকেশনটিতে সাইগউইন ব্যবহার করার জন্য আপনাকে রেড হ্যাট থেকে " লাইসেন্স বাইআউট " এর জন্য কয়েক হাজার ডলার কাঁটাতে হবে ; এটি যথেষ্ট পরিমাণে স্ট্যান্ডার্ড লাইসেন্সিং শর্তাদি অকার্যকর করে দেয় । গুগলের "সাইগউইন লাইসেন্স ব্যয়" এবং প্রথম কয়েকটি ফলাফল দেখুন।

মিংডব্লিউর জন্য, এ জাতীয় কোনও ব্যয় করা হয় না এবং লাইসেন্সগুলি (পিডি, বিএসডি, এমআইটি) অত্যন্ত অনুমোদিত। আপনার অ্যাপ্লিকেশনটির সাথে সর্বাধিক আপনি লাইসেন্সের বিবরণ সরবরাহ করতে পারবেন , যেমন মিংডব্লিউ -64-টিডিএম ব্যবহার করার সময় উইনপ্রেডস লাইসেন্সের মতো প্রয়োজনীয়।

ইজি হেলিয়ানথাসকে ধন্যবাদ সম্পাদনা করুন: বাণিজ্যিক লাইসেন্স আর উপলভ্য বা প্রয়োজনীয় নয় কারণ সাইগউইনের উইনসপ উপ-ডিরেক্টরিতে পাওয়া এপিআই লাইব্রেরি এখন সম্পূর্ণ জিপিএলের বিপরীতে এলজিপিএলের অধীনে বিতরণ করা হচ্ছে


2
রেডহ্যাট ওয়েবসাইটের একটি আপডেট ("লাইসেন্স বাইআউট" এর লিঙ্ক - 1 মার্চ, ২০১ As হিসাবে রেড হ্যাট আর সাইগউইনের জন্য বাণিজ্যিক বাইআউট লাইসেন্স বিক্রি করে না The বাণিজ্যিক লাইসেন্সের আর প্রয়োজন নেই কারণ সাইগউইন এখন জিএনইউ লেজারের অধীনে বিতরণ করা হচ্ছে) জিপিএল (এলজিপিএল) ' দয়া করে জিএনইউ লেজার জেনারেল পাবলিক লাইসেন্স (এলজিপিএল) পড়ুন
Izzy Helianthus

6

সাইগউইন একটি পূর্ণ-লিনাক্স-এর মতো প্ল্যাটফর্ম সরবরাহ করার জন্য নকশার বিস্তৃত সরঞ্জাম সহ উইন্ডোজের জন্য কম-বেশি সম্পূর্ণ পসিক্স পরিবেশ সরবরাহ করার জন্য ডিজাইন করা হয়েছে। তুলনায়, মিনিজিডাব্লু এবং এমএসওয়াইএস কেবল আরও প্রয়োজনীয় প্রয়োজনীয় সরঞ্জাম gccএবং bashউপলভ্য সহ একটি হালকা ও ন্যূনতম, কমপক্ষে POSIX- জাতীয় স্তর সরবরাহ করে । মিনিজিডব্লিউর আরও ন্যূনতম পদ্ধতির কারণে, এটি সাইগউইন অফার করে এমন পসিক্স এপিআই কভারেজের ডিগ্রি সরবরাহ করে না এবং তাই নির্দিষ্ট কিছু প্রোগ্রাম তৈরি করতে পারে না যা অন্যথায় সাইগউইনে সংকলিত হতে পারে।

দুটি দ্বারা উত্পন্ন কোডের ক্ষেত্রে, সাইগউইন টুলচেন একটি বৃহত রানটাইম লাইব্রেরির সাথে ডায়নামিক লিঙ্কিংয়ের উপর নির্ভর করে cygwin1.dll, যখন মিনজিডাব্লু টুলচেনটি বাইনারিগুলির সাথে কোডগুলি সংকলন করে যা উইন্ডোজ নেটিভ সি লাইব্রেরির msvcrt.dllসাথে ডায়ামেন্টিকভাবে কিছু অংশের সাথে সংযুক্ত করে glibc। সাইগউইন এক্সিকিউটেবলগুলি আরও কমপ্যাক্ট তবে পৃথক পুনরায় বিতরণযোগ্য ডিএলএল প্রয়োজন, যখন মিনিজিডাব্লু বাইনারিগুলি এককভাবে প্রেরণ করা যায় তবে আরও বড় হতে থাকে।

সিগউইন ভিত্তিক প্রোগ্রামগুলি চালনার জন্য একটি পৃথক ডিএলএল প্রয়োজনের বিষয়টিও লাইসেন্সিং সীমাবদ্ধতার দিকে পরিচালিত করে। সাইগউইন রানটাইম লাইব্রেরিটি জিপিএলভি 3 এর অধীনে ওএসআই-কমপ্লায়েন্ট লাইসেন্স সহ অ্যাপ্লিকেশনগুলির লিঙ্কিং ব্যতিক্রম সহ লাইসেন্সযুক্ত, তাই সাইগউইনের চারপাশে একটি ক্লোড-সোর্স অ্যাপ্লিকেশন তৈরি করতে ইচ্ছুক বিকাশকারীদের রেড হ্যাট থেকে বাণিজ্যিক লাইসেন্স নিতে হবে। অন্যদিকে, শিরোনাম এবং গ্রন্থাগারগুলি অনুমতিপ্রাপ্তভাবে লাইসেন্সপ্রাপ্ত হওয়ায় ওপেন-সোর্স এবং ক্লোজড-সোর্স অ্যাপ্লিকেশনগুলিতে MinGW কোড ব্যবহার করা যেতে পারে।


3

সাইগউইন হ'ল ইউনিক্সের মতো পরিবেশ এবং মাইক্রোসফ্ট উইন্ডোজের জন্য কমান্ড-লাইন ইন্টারফেস।

মিংগা মাইক্রোসফ্ট উইন্ডোজে জিএনইউ সংকলক সংগ্রহের (জিসিসি) একটি স্থানীয় সফ্টওয়্যার পোর্ট, উইন্ডোজ এপিআইয়ের জন্য নিখরচায় বিতরণযোগ্য আমদানি লাইব্রেরি এবং শিরোনাম ফাইলগুলির সেট সহ। MinGW বিকাশকারীদের মাইক্রোসফ্ট উইন্ডোজ অ্যাপ্লিকেশন তৈরি করতে দেয়।

পরিবেশ mingwব্যতীত উত্পাদিত বাইনারিগুলি চালাতে পারেন cygwin, তবে প্রয়োজনীয় যে সমস্ত লাইব্রেরি (ডিএলএল) উপস্থিত রয়েছে।


1

CygwinMinGWনেটিভ থাকার সময় একটি সামঞ্জস্যতা স্তর ব্যবহার করে । এটি অন্যতম প্রধান পার্থক্য।

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