উইন্ডোজের জন্য জিসিসি / জি ++ দিয়ে লিনাক্সে কীভাবে সংকলন করবেন?


119

আমি লিনাক্সে ফ্রিগ্লুট ব্যবহার করে সি ++ (জি ++) এ কিছু প্রভাব লিখেছি এবং সেগুলি সংকলন করছি

g++ -Wall -lglut part8.cpp -o part8

সুতরাং আমি ভাবছিলাম যে জি ++ স্ট্যাটিক সংকলিত উইন্ডোজ এক্সিকিউটেবল যা প্রয়োজনীয় সমস্ত কিছু রয়েছে তা তৈরি করা সম্ভব?

আমার উইন্ডোজ নেই, তাই লিনাক্সে যদি আমি এটি করতে পারতাম তবে এটি খুব সুন্দর হবে :)


4
অ্যান্ডিডগ, "বিনামূল্যে প্রথম ডোজ", ঠিক আছে। যাইহোক, উইন্ডোজ মেশিনে স্বয়ংক্রিয় বিল্ড প্রক্রিয়া সেটআপ করা আপনার কাছে লিনাক্সের জন্য একটি সম্পূর্ণ এবং কাজ করার পরেও অপ্রয়োজনীয়।
পি শোভিত

উইন্ডোজ ছাড়া আপনি কীভাবে আপনার উইন্ডোজ সফ্টওয়্যারটি পরীক্ষা করবেন? ওয়াইন ব্যবহার করছেন?
el.pescado

7
@ এল.পেসক্যাডো, বিল্ডিং এবং টেস্টিং সম্পূর্ণ আলাদা কাজ। উইন্ডোজ পূর্বের জন্য অপ্রয়োজনীয়।
পি শেভেড

উত্তর:


92

mingw32 লিনাক্সের প্যাকেজ হিসাবে বিদ্যমান। আপনি এটির সাথে উইন্ডোজ অ্যাপ্লিকেশনগুলি ক্রস-সংকলন এবং লিঙ্ক করতে পারেন। কোড :: ব্লকস ফোরামে এখানে একটি টিউটোরিয়াল রয়েছে । কমান্ডটি x86_64-w64-mingw32-gcc-win32উদাহরণস্বরূপ পরিবর্তিত হয় তা মনে করুন ।

উদাহরণস্বরূপ, উবুন্টু এর সংগ্রহস্থলগুলিতে MinGW রয়েছে:

$ apt-cache search mingw
[...]
g++-mingw-w64 - GNU C++ compiler for MinGW-w64
gcc-mingw-w64 - GNU C compiler for MinGW-w64
mingw-w64 - Development environment targeting 32- and 64-bit Windows
[...]

3
আপনি যদি ডেবিয়ান ব্যবহার করেন তবে মিংডব্লিউ 32 ইতিমধ্যে সংগ্রহস্থলের মধ্যে রয়েছে, কয়েকটি প্রম্পম্পাইল্ড লাইব্রেরির সাথেও রয়েছে।
লিওরি

1
ঠিক আছে, nongnu.org/mingw-cross-env এ একটি ক্রস সংকলন পরিবেশ রয়েছে । এটিতে ফ্রিগ্লট অন্তর্ভুক্ত রয়েছে। তবে আমি এটি ব্যবহার করি নি, সুতরাং এটি সম্পর্কে আমাকে জিজ্ঞাসা করবেন না;)
অ্যান্ডিডগ

4
মিংডব্লিউ 32 এর "32" এর অর্থ কি আমি কেবল 32-বিট বাইনারি তৈরি করতে পারি? একটি 64-বিট বাইনারি উত্পাদন করার জন্য কি কোনও সমাধান আছে?
bluenote10

1
bluenote10: এমন রূপগুলি রয়েছে যা x64 এর জন্য তৈরি করে, যেমন "x86_64-w64-mingw32-g ++"। "Mingw32" বেসটি সক্ষম হতে পারে বা নাও পারে তবে নাম দ্বারা বৈকল্পিকগুলি ইনস্টল / ব্যবহার করা যথেষ্ট সহজ। ar2015: এটি আদৌ সি ++ 11 সমর্থন করে না বা আপনি যে সমস্যাটি নিয়েছিলেন সে সম্পর্কে কথা বলছেন? আমি কথা বলার সাথে সাথে মিংডব্লিউটি তৈরির জন্য একটি প্রকল্প পাওয়ার বিষয়ে কাজ করছি এবং এটি জানা ভাল তথ্য হবে। অন্যান্য থ্রেড ইঙ্গিত দেয় যে এটি সি ++ 11 সমর্থন করে (উদাঃ স্ট্যাকওভারফ্লো / প্রশ্ন / 16136142/… )। অবশ্যই আমি সাহায্য করতে পেরে খুশি হব তবে তার জন্য একটি পৃথক পোস্ট সেরা হবে।
জন পি

1
এই বিষয়গুলিতে জিনিসগুলি কি সম্প্রতি পরিবর্তিত হয়েছে?
মন্ট্রিল

30

লিনাক্সে উইন্ডোজের জন্য সংকলনের একটি বিকল্প হ'ল মিংগউয়ের মাধ্যমে। আমি খুব সাহায্যকারী টিউটোরিয়াল পাওয়া এখানে

ডেবিয়ান ভিত্তিক সিস্টেমে মিংডব্লিউ 32 ইনস্টল করতে, নিম্নলিখিত কমান্ডটি চালান:
sudo apt-get install mingw32

আপনার কোডটি সংকলন করতে আপনি কিছু ব্যবহার করতে পারেন:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp

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

ওয়াইন ইনস্টল করতে, চালান:
sudo apt-get install wine


7
আপনাকে তা নির্দিষ্ট করার প্রয়োজন হবে না mingw32-binutilsএবং mingw32-runtimeকারণ তারা এর নির্ভরতা হয়mingw32
henje

শীতল, সিপিপিতে খুব সাধারণ ত্রুটি ( void main(){}ইত্যাদি ...) ছিল, আমার ধারণা এটি উইন্ডোতে সংকলিত হয় তবে মিংডব্লুতে ব্যর্থ হয়, আমি সেগুলি ঠিক করেছিলাম। আমি চেষ্টাও করেছি i586-mingw32msvc-cppএবং এটি একটি লিখিত ফাইল উত্পন্ন করে যেমন লোকে সংকলিত হতে পারে এমন কিছু .. g ++ এক কাজ করেছে, THX!
অ্যাকোরিয়াস পাওয়ার

2
@ হ্যাঁ পুরোপুরি, যদি আপনি এগুলি নির্দিষ্ট না করেন তবে আনইনস্টল করার সময় প্যাকেজ ম্যানেজারের দ্বারা সেগুলি স্বয়ংক্রিয়ভাবে অপসারণ করা যাবে mingw32("নির্ভরতা" হিসাবে চিহ্নিত them
ম্যাথিউউ

19

প্রস্তাবিত পদ্ধতিটি আমাকে উবুন্টু 16.04 এ ত্রুটি দিয়েছে: ই: প্যাকেজ মিংডব্লু 32 সনাক্ত করতে অক্ষম

================================================== =========================

উবুন্টুতে এই প্যাকেজটি ইনস্টল করতে দয়া করে নিম্নলিখিত ব্যবহার করুন:

sudo apt-get install mingw-w64

ইনস্টল করার পরে আপনি এটি ব্যবহার করতে পারেন:

x86_64-w64-mingw32-g++

দয়া করে নোট করুন!

64-বিট ব্যবহারের জন্য: x86_64-w64-mingw32-g ++

32-বিট ব্যবহারের জন্য: i686-w64-mingw32-g ++


14

আপনার প্যাকেজ ম্যানেজারের থেকে mingw64 এর মতো ক্রস সংকলক ইনস্টল করুন। তারপরে নিম্নলিখিত উপায়ে সংকলন করুন: 32-বিট উইন্ডোজ বা 64-বিট উইন্ডোজের জন্য কেবল কল gccকরার পরিবর্তে । আমি বিকল্পটিও ব্যবহার করব , কারণ লক্ষ্য সিস্টেমে সমস্ত লাইব্রেরি নাও থাকতে পারে।i686-w64-mingw32-gccx86_64-w64-mingw32-gcc"--static

আপনি যদি ফরত্রানের মতো অন্য ভাষাও সংকলন করতে চান তবে আগের কমান্ডগুলির -gccসাথে প্রতিস্থাপন করুন -gfortran


7

উইন্ডোজ এক্স-এক্সিকিউটেবলগুলি সি-তে তৈরি করতে আমি লিনাক্সে মিংডাব্লু ব্যবহার করেছি, আমার ধারণা সি ++ কাজ করবেও।

আমার একটি প্রকল্প রয়েছে, ELLCC, এটি ক্রস সংকলক সরঞ্জাম চেইন হিসাবে প্যাকেজগুলি ঝাঁকুনি এবং অন্যান্য জিনিস। আমি এটি উইন্ডোজের জন্য ক্ল্যাং (সি ++), বিন্টিলস এবং জিডিবি সংকলন করতে ব্যবহার করি। বেশ কয়েকটি লিনাক্স হোস্টের প্রাক-সংকলিত বাইনারিগুলির জন্য ellcc.org এ ডাউনলোড লিঙ্কটি অনুসরণ করুন ।


1
যেহেতু আমি উত্তরটি পোস্ট করেছি তাই আমি আরও কিছুটা এগিয়ে চলেছি। আমার একটি প্রকল্প রয়েছে, ELLCC, এটি ক্রস সংকলক সরঞ্জাম চেইন হিসাবে প্যাকেজগুলি ঝাঁকুনি এবং অন্যান্য জিনিস। আমি এটি উইন্ডোজের জন্য ক্ল্যাং (সি ++), বিন্টিলস এবং জিডিবি সংকলন করতে ব্যবহার করি। বেশ কয়েকটি লিনাক্স হোস্টের প্রাক-সংকলিত বাইনারিগুলির জন্য ellcc.org এ ডাউনলোড লিঙ্কটি অনুসরণ করুন ।
রিচার্ড পেনিংটন

5

থেকে: https://fedoraproject.org/wiki/MinGW/ টিউটোরিয়াল

ফেডোরা 17 অনুসারে উইন 32 এবং উইন 64 টার্গেটের জন্য সহজেই (ক্রস-কম্পাইল) বাইনারি তৈরি করা সম্ভব। এটি মিংডাব্লু-ডাব্লু 64 সরঞ্জামচেন ব্যবহার করে উপলব্ধি করা হয়েছে: http://mingw-w64.sf.net/ । এই সরঞ্জামচেনটি ব্যবহার করে আপনাকে নিম্নলিখিত প্রোগ্রামিং ভাষার জন্য বাইনারি তৈরি করতে পারবেন: সি, সি ++, উদ্দেশ্য-সি, উদ্দেশ্য-সি ++ এবং ফোর্টরান।

"উইন্ডোজ ক্রস-সংকলক ব্যবহারের জন্য টিপস এবং কৌশল": https://fedoraproject.org/wiki/MinGW/ টিপস


3

ফেডোরার জন্য এটি

sudo yum groupinstall -y "MinGW cross-compiler"

1
এই সমস্ত ফেডোরা ব্যবহারকারীদের জন্য: এখানে একটি দুর্দান্ত টিউটোরিয়াল রয়েছে: fedoraproject.org/wiki/MinGW (ভুল লিঙ্কটির কারণে সম্পাদিত)
লেমুরপিউড

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