উত্তর:
সরলীকরণ হিসাবে, এটি এর মতো:
সাইগউইনে কিছু সংকলন করুন এবং আপনি এটি সাইগউইনের জন্য সংকলন করছেন ।
MinGW এ কিছু সংকলন করুন এবং আপনি এটি উইন্ডোজের জন্য সংকলন করছেন ।
সাইগউইন সম্পর্কে
সাইগউইনের উদ্দেশ্য হ'ল ইউনিক্স ভিত্তিক অপারেটিং সিস্টেমগুলি সরবরাহ করে এমন অনেক ছোট বিবরণ অনুকরণ করে এবং পসিক্স স্ট্যান্ডার্ড দ্বারা নথিভুক্ত করা উইন্ডোজে ইউনিক্স ভিত্তিক অ্যাপ্লিকেশনগুলি পোর্টিংকে আরও সহজ করে তোলা । আপনার অ্যাপ্লিকেশনটি ইউনিক্স বৈশিষ্ট্য যেমন পাইপস, ইউনিক্স-স্টাইলের ফাইল এবং ডিরেক্টরি অ্যাক্সেস ইত্যাদি ব্যবহার করতে পারে এবং এটি সাইগউইনের সাথে সংকলিত হতে পারে যা আপনার অ্যাপ্লিকেশনটির চারপাশে একটি সামঞ্জস্য স্তর হিসাবে কাজ করবে , যাতে ইউনিক্স-নির্দিষ্ট দৃষ্টান্তগুলির অনেকগুলিই পারেন ব্যবহার করা চালিয়ে যান।
আপনি যখন নিজের সফ্টওয়্যার বিতরণ করবেন, তখন প্রাপককে এটিকে চালানো দরকার সাইগউইন রান-টাইম পরিবেশের সাথে (ফাইল দ্বারা সরবরাহিত cygwin1.dll
)। আপনি এটি আপনার সফ্টওয়্যার দিয়ে বিতরণ করতে পারেন, তবে আপনার সফ্টওয়্যারটিকে এর ওপেন সোর্স লাইসেন্স মেনে চলতে হবে। এমন কি এমন ঘটনাও হতে পারে যে এমনকি আপনার সফ্টওয়্যারটিকে এটির সাথে সংযুক্ত করার জন্য, তবে dll আলাদাভাবে বিতরণ করার জন্য আপনাকে ওপেন সোর্স লাইসেন্সটি সম্মানের প্রয়োজন হতে পারে।
MinGW সম্পর্কে
মিনজিডাব্লুটির উদ্দেশ্য কেবল জিএনইউ সংকলক সরঞ্জামগুলির যেমন উইন্ডো, যেমন জিসিসি, মেক, ব্যাশ এবং এর মতো একটি উইন্ডোজ বন্দর হতে পারে। এটি ইউনিক্সের সাথে ব্যাপক সামঞ্জস্যতা অনুকরণ করার বা সরবরাহ করার চেষ্টা করে না, পরিবর্তে এটি জিসিসি (জিএনইউ সংকলক) এবং উইন্ডোজটিতে অল্প সংখ্যক অন্যান্য সরঞ্জাম ব্যবহার করার জন্য ন্যূনতম প্রয়োজনীয় পরিবেশ সরবরাহ করে। এতে সাইগউইনের মতো ইউনিক্স এমুলেশন স্তর নেই, তবে ফলস্বরূপ আপনার অ্যাপ্লিকেশনটির বিশেষত উইন্ডোজ চলতে সক্ষম হওয়ার জন্য প্রোগ্রামিং করা দরকার, যার অর্থ এটি যদি একটি আদর্শ ইউনিক্স পরিবেশে চলার উপর নির্ভর করার জন্য তৈরি করা হয়েছিল এবং উল্লেখযোগ্য পরিবর্তন হতে পারে এবং ইউনিক্স-নির্দিষ্ট বৈশিষ্ট্য যেমন পূর্বে উল্লিখিতগুলি ব্যবহার করে। ডিফল্টরূপে, মিনজিডাব্লু এর জিসিসিতে সংকলিত কোড .exe এবং .dll ফাইল সহ একটি স্থানীয় উইন্ডোজ এক্স 86 টার্গেটে সংকলন করবে, যদিও আপনি মূলত GNU সংকলক সরঞ্জাম স্যুট ব্যবহার করছেন তাই আপনি সঠিক সেটিংসের সাথে ক্রস-সংকলনও করতে পারেন।
MinGW মূলত মাইক্রোসফ্ট ভিজ্যুয়াল সি ++ সংকলক এবং এর সাথে যুক্ত লিঙ্কিং / মেক সরঞ্জামগুলির বিকল্প। কিছু ক্ষেত্রে মাইক্রোসফ্ট ভিজ্যুয়াল সি ++, সঠিক লাইব্রেরি সহ এবং কিছু ক্ষেত্রে অন্যান্য সংশোধন সহ সংকলনের উদ্দেশ্যে তৈরি এমন কিছু সংকলনের জন্য MinGW ব্যবহার করা সম্ভব হতে পারে।
উইন্ডোজ অপারেটিং সিস্টেমের সাথে কথোপকথনের জন্য মিনজিডাব্লুতে কয়েকটি বেসিক স্ট্যান্ডার্ড লাইব্রেরি অন্তর্ভুক্ত রয়েছে, তবে জিএনইউ সংকলক সংগ্রহের অন্তর্ভুক্ত সাধারণ স্ট্যান্ডার্ড লাইব্রেরিগুলির মতো এটি আপনার তৈরি সফ্টওয়্যারটিতে লাইসেন্সিং সীমাবদ্ধতা আরোপ করে না।
অপ্রয়োজনীয় সফ্টওয়্যার অ্যাপ্লিকেশনগুলির জন্য, যদি আপনি একটি বিস্তৃত ক্রস-প্ল্যাটফর্ম কাঠামো ব্যবহার না করেন তবে তাদের ক্রস প্ল্যাটফর্ম তৈরি করা যথেষ্ট চ্যালেঞ্জ হতে পারে। আমি যখন লিখেছিলাম তখন কিউটি ফ্রেমওয়ার্কটি এই উদ্দেশ্যে সর্বাধিক জনপ্রিয় ছিল, গ্রাফিকাল অ্যাপ্লিকেশনগুলি তৈরি করার অনুমতি দেয় যা উইন্ডোজ সহ অপারেটিং সিস্টেমগুলিতে কাজ করে, তবে অন্যান্য বিকল্পগুলিও রয়েছে। আপনি যদি প্রথম থেকেই এই জাতীয় কাঠামো ব্যবহার করেন তবে অন্য প্ল্যাটফর্মে পোর্ট করার সময় আপনি কেবল নিজের মাথা ব্যথা হ্রাস করতে পারবেন না তবে আপনি যদি একইভাবে লেখেন তবে আপনি সমস্ত প্ল্যাটফর্ম জুড়ে একই গ্রাফিক্যাল উইজেটস - উইন্ডোজ, মেনু এবং নিয়ন্ত্রণগুলি ব্যবহার করতে পারেন জিইউআই অ্যাপ্লিকেশন এবং সেগুলি ব্যবহারকারীর কাছে দেশীয় প্রদর্শিত হবে।
সাইগউইন একটি উইন্ডোজে সম্পূর্ণ ইউনিক্স / পসিক্স পরিবেশ তৈরি করার চেষ্টা। এটি করতে এটি বিভিন্ন ডিএলএল ব্যবহার করে। এই ডিএলএলগুলি জিপিএলভি 3 + দ্বারা আচ্ছাদিত থাকলেও তাদের লাইসেন্সটিতে একটি ব্যতিক্রম রয়েছে যা উত্পন্ন কাজকে জিপিএলভি 3 + দ্বারা আচ্ছাদিত করতে বাধ্য করে না। মিনজিডাব্লু হ'ল একটি সি / সি ++ সংকলক স্যুট যা আপনাকে যেমন ডিএলএলগুলির উপর নির্ভরশীলতা ছাড়াই উইন্ডোজ এক্সিকিউটেবলগুলি তৈরি করতে দেয় - আপনার কেবলমাত্র সাধারণ এমএসভিসি রানটাইম প্রয়োজন, যা কোনও সাধারণ মাইক্রোসফ্ট উইন্ডোজ ইনস্টলেশনের অংশ are
আপনি এমএসওয়াইএস নামক মিনিজিডাব্লু দিয়ে সংকলিত পরিবেশের মতো একটি ছোট ইউনিক্স / পসিক্সও পেতে পারেন । সাইগউইনের সমস্ত বৈশিষ্ট্যের কাছে এটির কোথাও নেই, তবে মিনজিডাব্লু ব্যবহার করতে ইচ্ছুক প্রোগ্রামারদের পক্ষে এটি আদর্শ।
অন্যান্য উত্তরগুলি যুক্ত করার জন্য, সাইগউইন MinGW লাইব্রেরি এবং শিরোনাম নিয়ে আসে এবং আপনি সিসিগুইন 1.ডিলের সাথে লিঙ্ক না করে সংকলন করতে পারেন -গনিসি-র সাথে এমএনও-সাইগউইন পতাকা ব্যবহার করে। আমি এটিকে প্লেইন মিনজিডাব্লু এবং এমএসওয়াইএস ব্যবহারের ক্ষেত্রে বেশি পছন্দ করি।
gcc-3 -mno-cygwin
mingw64-x86_64-gcc-core
সাইগউইন প্যাকেজটি ইনস্টল করুন । MinGW-64 এর পরে বিশ্রীভাবে নাম x86_64-w64-mingw32-gcc
কমান্ড হিসাবে উপলব্ধ হবে । দয়া করে Godশ্বর (গুলি), কেউ ইতিমধ্যে ইতিমধ্যে এই রক্তাক্ত জিনিসগুলির নাম একত্রিত করে।
উইকিপিডিয়া এখানে একটি তুলনা করে ।
সাইগউইনের ওয়েবসাইট থেকে :
- সাইগউইন উইন্ডোজের জন্য একটি লিনাক্সের মতো পরিবেশ। এটি দুটি অংশ নিয়ে গঠিত: একটি ডিএলএল (cygwin1.dll) যা লিনাক্স এপিআই এমুলেশন স্তর হিসাবে কাজ করে যা যথেষ্ট লিনাক্স এপিআই কার্যকারিতা সরবরাহ করে।
- লিনাক্স চেহারা এবং অনুভূতি সরবরাহ করে এমন সরঞ্জামগুলির একটি সংকলন।
মিংসউ এর ওয়েবসাইট থেকে :
মিনজিডাব্লু ("উইন্ডোজের জন্য মিনিমালিস্টিক জিএনইউ") নিখরচায়ভাবে উপলভ্য এবং বিনামূল্যে বিতরণযোগ্য উইন্ডোজ নির্দিষ্ট হেডার ফাইল এবং আমদানি গ্রন্থাগারগুলির সংমিশ্রণ যা জিএনইউ টুলসেটের সাথে মিলিত হয় যা কোনও দেশীয় উইন্ডোজ প্রোগ্রাম তৈরি করতে দেয় যা কোনও তৃতীয় পক্ষের সি রানটাইম ডিএলএলে নির্ভর করে না native
সাইগউইন একটি ডিএলএল, সাইগউইন.ডিল, (বা ডিএলএলগুলির একটি সেট) ব্যবহার করে উইন্ডোজটিতে পসআইএক্স-এর মতো রানটাইম সরবরাহ করতে।
MinGW একটি স্থানীয় Win32 অ্যাপ্লিকেশনটিতে সংকলন করে।
আপনি যদি সাইগউইনের সাথে কিছু তৈরি করেন তবে আপনি যে কোনও সিস্টেম এটি ইনস্টল করেন সেগুলির জন্য সাইগউইন ডিএলএলও প্রয়োজন। একটি মিনিজিডাব্লু অ্যাপ্লিকেশনটির জন্য কোনও বিশেষ রানটাইম প্রয়োজন হয় না।
সাইগউইন এবং মিনজিডাব্লুয়ের মধ্যে পার্থক্য বুঝতে এই উত্তর দেওয়া প্রশ্নগুলি পড়ুন।
প্রশ্ন # 1: আমি এমন একটি অ্যাপ্লিকেশন তৈরি করতে চাই যা আমি উত্স কোডটি একবার লিখি, এটি একবার সংকলন করে এটি কোনও প্ল্যাটফর্মে চালাও (যেমন উইন্ডোজ, লিনাক্স এবং ম্যাক ওএস এক্স…)।
উত্তর # 1: জাভাতে আপনার উত্স কোডটি লিখুন। উত্স কোডটি একবার সঙ্কলন করুন এবং এটিকে যে কোনও জায়গায় চালান।
প্রশ্ন # 2: আমি এমন একটি অ্যাপ্লিকেশন তৈরি করতে চাই যা আমি একবার সোর্স কোড লিখি তবে কোনও সমস্যা নেই যে আমি কোনও প্ল্যাটফর্মের জন্য সোর্স কোডটি আলাদাভাবে সংকলন করি (যেমন উইন্ডোজ, লিনাক্স এবং ম্যাক ওএস এক্স…)।
উত্তর # 2: সি বা সি ++ এ আপনার উত্স কোডটি লিখুন। কেবলমাত্র মানক শিরোনাম ফাইলগুলি ব্যবহার করুন। যে কোনও প্ল্যাটফর্মের জন্য উপযুক্ত সংকলক ব্যবহার করুন (যেমন উইন্ডোজের জন্য ভিজ্যুয়াল স্টুডিও, লিনাক্সের জন্য জিসিসি এবং ম্যাকের জন্য এক্সকোড)। মনে রাখবেন যে সমস্ত প্ল্যাটফর্মে আপনার উত্স কোডটি সফলভাবে সংকলন করতে আপনার কোনও উন্নত প্রোগ্রামিং বৈশিষ্ট্য ব্যবহার করা উচিত নয়। আপনি যদি কোন সি বা সি ++ স্ট্যান্ডার্ড ক্লাস বা ফাংশন ব্যবহার না করেন তবে আপনার উত্স কোডটি অন্য প্ল্যাটফর্মগুলিতে সংকলন করে না।
প্রশ্ন # 3: প্রশ্নের উত্তর 2 2, প্রতিটি প্ল্যাটফর্মের জন্য পৃথক সংকলক ব্যবহার করা কঠিন, কোনও ক্রস প্ল্যাটফর্ম সংকলক আছে কি?
উত্তর # 3: হ্যাঁ, জিসিসি সংকলকটি ব্যবহার করুন। এটি একটি ক্রস প্ল্যাটফর্ম সংকলক। উইন্ডোজে আপনার উত্স কোডটি সংকলনের জন্য MinGW ব্যবহার করুন যা উইন্ডোজের জন্য জিসিসি সংকলক সরবরাহ করে এবং আপনার উত্স কোডটি স্থানীয় উইন্ডোজ প্রোগ্রামে সংকলন করে iles সফলভাবে সমস্ত প্ল্যাটফর্মে আপনার উত্স কোডটি সংকলন করতে কোনও উন্নত প্রোগ্রামিং বৈশিষ্ট্য (উইন্ডোজ এপিআই এর মতো) ব্যবহার করবেন না। আপনি যদি উইন্ডোজ এপিআই ফাংশন ব্যবহার করেন তবে আপনার উত্স কোডটি অন্য প্ল্যাটফর্মগুলিতে সংকলন করে না।
প্রশ্ন # 4: সি বা সি ++ স্ট্যান্ডার্ড শিরোনাম ফাইলগুলি মাল্টি-থ্রেডিংয়ের মতো কোনও উন্নত প্রোগ্রামিং বৈশিষ্ট্য সরবরাহ করে না। আমি কি করতে পারি?
উত্তর # 4: আপনার পসিক্স (পোর্টেবল অপারেটিং সিস্টেম ইন্টারফেস [ইউনিক্সের জন্য]) মান ব্যবহার করা উচিত। এটি অনেক উন্নত প্রোগ্রামিং বৈশিষ্ট্য এবং সরঞ্জাম সরবরাহ করে। অনেক অপারেটিং সিস্টেম সম্পূর্ণ বা আংশিকভাবে পসিক্স সামঞ্জস্যপূর্ণ (যেমন ম্যাক ওএস এক্স, সোলারিস, বিএসডি / ওএস এবং ...)। কিছু অপারেটিং সিস্টেম POSIX সামঞ্জস্যপূর্ণ হিসাবে আনুষ্ঠানিকভাবে শংসাপত্রিত না হওয়ার পরে বৃহত অংশে (যেমন লিনাক্স, ফ্রিবিএসডি, ওপেনসোলারিস এবং ...) অনুসারে। সাইগউইন মাইক্রোসফ্ট উইন্ডোজের জন্য বেশিরভাগ পসিক্স-সম্মতিজনক বিকাশ এবং রান-টাইম পরিবেশ সরবরাহ করে।
এভাবে:
সি প্রোগ্রামের পোর্টিংয়ের দৃষ্টিকোণ থেকে এটি বোঝার একটি ভাল উপায় একটি উদাহরণ নেওয়া:
#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:
।system
cmd.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
।
MinGW
সংস্করণ 1.3.3 থেকে কাঁটাচামচ করাCygwin
। উভয় যদিওCygwin
এবংMinGW
বন্দর ব্যবহার করা যেতে পারেUNIX
সফটওয়্যারWindows
, তারা বিভিন্ন পন্থা আছে:Cygwin
সম্পূর্ণ প্রদানের লক্ষ্যেPOSIX layer
বিভিন্ন ব্যবস্থা কল ও লাইব্রেরি যে উপস্থিত এর emulations প্রদান করেLinux
,UNIX
এবংBSD
রূপগুলো।POSIX layer
উপরের উপর সঞ্চালিত হয়Windows
, যেখানে প্রয়োজন সামঞ্জস্যের জন্য কর্মক্ষমতা sacrificing। তদনুসারে, এই পদ্ধতির জন্য কোনও কপিলিফ্টেড সামঞ্জস্য লাইব্রেরির শীর্ষে চলার জন্যWindows
লিখিত প্রোগ্রামগুলি প্রয়োজন যা প্রোগ্রামের সাথে প্রোগ্রামের সাথেCygwin
বিতরণ করা আবশ্যকsource code
।MinGW
প্রত্যক্ষ মাধ্যমে দেশীয় কার্যকারিতা এবং কর্মক্ষমতা প্রদান লক্ষ্য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
।
এটি অ্যান্ড টি এর ইউ / উইন সফটওয়্যারটিকে উপেক্ষা করবেন না , যা আপনাকে উইন্ডোজে ইউনিক্স অ্যাপ্লিকেশনগুলি সংকলন করতে সহায়তা করার জন্য ডিজাইন করা হয়েছে (সর্বশেষ সংস্করণ - 2012-08-06; এক্লিপস পাবলিক লাইসেন্স, সংস্করণ 1.0) ব্যবহার করে।
সাইগউইনের মতো তাদেরও লাইব্রেরির বিরুদ্ধে দৌড়াতে হবে; তাদের ক্ষেত্রে POSIX.DLL
। এটিএন্ডটি অবধি ছেলেরা ভয়ঙ্কর প্রকৌশলী (একই গ্রুপ যা আপনাকে ksh এবং বিন্দু এনেছে ) এবং তাদের স্টাফগুলি পরীক্ষা করে দেখার মতো।
সাইগউইন পুরো পসিক্স পরিবেশকে এমুলেট করে, যখন মিনজিডাব্লু শুধুমাত্র সংকলনের জন্য ন্যূনতম সরঞ্জাম সেট (নেটিভ উইন অ্যাপ্লিকেশনটি সংকলন করে।) সুতরাং আপনি যদি নিজের প্রকল্পটি ক্রস-প্ল্যাটফর্ম করতে চান তবে উভয়ের মধ্যে পছন্দটি সুস্পষ্ট, মিনিজিডব্লু।
যদিও আপনি উইন্ডোজটিতে ভিএস, লিনাক্স / ইউনিসিসে জিসিসি ব্যবহার বিবেচনা করতে পারেন। বেশিরভাগ মুক্ত উত্স প্রকল্পগুলি তা করে (যেমন ফায়ারফক্স বা পাইথন)।
clang
একটি কার্যকর পারাপার প্ল্যাটফর্ম সমাধান solution
নোট করুন যে ইউটিলিটি আচরণটি সত্যই দুজনের মধ্যে পৃথক হতে পারে।
উদাহরণস্বরূপ, সাইগউইন টার কাঁটাচামচ করতে পারে - কারণ কাঁটাচামচ () ডিএলএল-তে সমর্থিত - যেখানে মিংগ ভার্শনটি পারে না। উত্স থেকে mysql সংকলনের চেষ্টা করার সময় এটি একটি সমস্যা a
বাণিজ্যিক / মালিকানাধীন / নন-ওপেন সোর্স অ্যাপ্লিকেশনটিতে সাইগউইন ব্যবহার করার জন্য আপনাকে রেড হ্যাট থেকে " লাইসেন্স বাইআউট " এর জন্য কয়েক হাজার ডলার কাঁটাতে হবে ; এটি যথেষ্ট পরিমাণে স্ট্যান্ডার্ড লাইসেন্সিং শর্তাদি অকার্যকর করে দেয় । গুগলের "সাইগউইন লাইসেন্স ব্যয়" এবং প্রথম কয়েকটি ফলাফল দেখুন।
মিংডব্লিউর জন্য, এ জাতীয় কোনও ব্যয় করা হয় না এবং লাইসেন্সগুলি (পিডি, বিএসডি, এমআইটি) অত্যন্ত অনুমোদিত। আপনার অ্যাপ্লিকেশনটির সাথে সর্বাধিক আপনি লাইসেন্সের বিবরণ সরবরাহ করতে পারবেন , যেমন মিংডব্লিউ -64-টিডিএম ব্যবহার করার সময় উইনপ্রেডস লাইসেন্সের মতো প্রয়োজনীয়।
ইজি হেলিয়ানথাসকে ধন্যবাদ সম্পাদনা করুন: বাণিজ্যিক লাইসেন্স আর উপলভ্য বা প্রয়োজনীয় নয় কারণ সাইগউইনের উইনসপ উপ-ডিরেক্টরিতে পাওয়া এপিআই লাইব্রেরি এখন সম্পূর্ণ জিপিএলের বিপরীতে এলজিপিএলের অধীনে বিতরণ করা হচ্ছে ।
সাইগউইন একটি পূর্ণ-লিনাক্স-এর মতো প্ল্যাটফর্ম সরবরাহ করার জন্য নকশার বিস্তৃত সরঞ্জাম সহ উইন্ডোজের জন্য কম-বেশি সম্পূর্ণ পসিক্স পরিবেশ সরবরাহ করার জন্য ডিজাইন করা হয়েছে। তুলনায়, মিনিজিডাব্লু এবং এমএসওয়াইএস কেবল আরও প্রয়োজনীয় প্রয়োজনীয় সরঞ্জাম gcc
এবং bash
উপলভ্য সহ একটি হালকা ও ন্যূনতম, কমপক্ষে POSIX- জাতীয় স্তর সরবরাহ করে । মিনিজিডব্লিউর আরও ন্যূনতম পদ্ধতির কারণে, এটি সাইগউইন অফার করে এমন পসিক্স এপিআই কভারেজের ডিগ্রি সরবরাহ করে না এবং তাই নির্দিষ্ট কিছু প্রোগ্রাম তৈরি করতে পারে না যা অন্যথায় সাইগউইনে সংকলিত হতে পারে।
দুটি দ্বারা উত্পন্ন কোডের ক্ষেত্রে, সাইগউইন টুলচেন একটি বৃহত রানটাইম লাইব্রেরির সাথে ডায়নামিক লিঙ্কিংয়ের উপর নির্ভর করে cygwin1.dll
, যখন মিনজিডাব্লু টুলচেনটি বাইনারিগুলির সাথে কোডগুলি সংকলন করে যা উইন্ডোজ নেটিভ সি লাইব্রেরির msvcrt.dll
সাথে ডায়ামেন্টিকভাবে কিছু অংশের সাথে সংযুক্ত করে glibc
। সাইগউইন এক্সিকিউটেবলগুলি আরও কমপ্যাক্ট তবে পৃথক পুনরায় বিতরণযোগ্য ডিএলএল প্রয়োজন, যখন মিনিজিডাব্লু বাইনারিগুলি এককভাবে প্রেরণ করা যায় তবে আরও বড় হতে থাকে।
সিগউইন ভিত্তিক প্রোগ্রামগুলি চালনার জন্য একটি পৃথক ডিএলএল প্রয়োজনের বিষয়টিও লাইসেন্সিং সীমাবদ্ধতার দিকে পরিচালিত করে। সাইগউইন রানটাইম লাইব্রেরিটি জিপিএলভি 3 এর অধীনে ওএসআই-কমপ্লায়েন্ট লাইসেন্স সহ অ্যাপ্লিকেশনগুলির লিঙ্কিং ব্যতিক্রম সহ লাইসেন্সযুক্ত, তাই সাইগউইনের চারপাশে একটি ক্লোড-সোর্স অ্যাপ্লিকেশন তৈরি করতে ইচ্ছুক বিকাশকারীদের রেড হ্যাট থেকে বাণিজ্যিক লাইসেন্স নিতে হবে। অন্যদিকে, শিরোনাম এবং গ্রন্থাগারগুলি অনুমতিপ্রাপ্তভাবে লাইসেন্সপ্রাপ্ত হওয়ায় ওপেন-সোর্স এবং ক্লোজড-সোর্স অ্যাপ্লিকেশনগুলিতে MinGW কোড ব্যবহার করা যেতে পারে।
সাইগউইন হ'ল ইউনিক্সের মতো পরিবেশ এবং মাইক্রোসফ্ট উইন্ডোজের জন্য কমান্ড-লাইন ইন্টারফেস।
মিংগা মাইক্রোসফ্ট উইন্ডোজে জিএনইউ সংকলক সংগ্রহের (জিসিসি) একটি স্থানীয় সফ্টওয়্যার পোর্ট, উইন্ডোজ এপিআইয়ের জন্য নিখরচায় বিতরণযোগ্য আমদানি লাইব্রেরি এবং শিরোনাম ফাইলগুলির সেট সহ। MinGW বিকাশকারীদের মাইক্রোসফ্ট উইন্ডোজ অ্যাপ্লিকেশন তৈরি করতে দেয়।
পরিবেশ mingw
ব্যতীত উত্পাদিত বাইনারিগুলি চালাতে পারেন cygwin
, তবে প্রয়োজনীয় যে সমস্ত লাইব্রেরি (ডিএলএল) উপস্থিত রয়েছে।
Cygwin
MinGW
নেটিভ থাকার সময় একটি সামঞ্জস্যতা স্তর ব্যবহার করে । এটি অন্যতম প্রধান পার্থক্য।