कैसे gcc / g ++ के साथ लिनक्स पर विंडोज के लिए संकलन करने के लिए?


119

मैंने लिनक्स पर फ्रीग्लुट का उपयोग करते हुए C ++ (g ++) में कुछ प्रभाव लिखे हैं, और मैं उन्हें संकलित करता हूं

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

तो मैं सोच रहा था कि क्या यह संभव है कि जी ++ में स्थिर संकलित विंडोज निष्पादन योग्य हो जिसमें सब कुछ आवश्यक हो?

मेरे पास विंडोज नहीं है, तो यह वास्तव में अच्छा होगा, अगर मैं लिनक्स पर ऐसा कर सकता हूं :)


4
@AndiDog, "पहली खुराक मुफ्त में", सही। वैसे भी, विंडोज मशीन पर स्वचालित निर्माण प्रक्रिया को स्थापित करना, जबकि आपके पास लिनक्स के लिए एक पूर्ण और काम करना अनावश्यक है।
पी शेव्ड

आप विंडोज के बिना अपने विंडोज सॉफ्टवेयर का परीक्षण कैसे करेंगे? शराब का उपयोग?
el.pescado

7
@ el.pescado, निर्माण और परीक्षण पूरी तरह से अलग कार्य हैं। विंडोज पूर्व के लिए अनावश्यक है।
पी शेव्ड

जवाबों:


92

mingw32 लिनक्स के लिए एक पैकेज के रूप में मौजूद है। आप इसके साथ विंडोज अनुप्रयोगों को क्रॉस-कंपाइल कर सकते हैं। कोड :: ब्लॉक फोरम में यहाँ एक ट्यूटोरियल हैx86_64-w64-mingw32-gcc-win32उदाहरण के लिए , मन बदल जाता है ।

उदाहरण के लिए, उबंटू की अपनी रिपॉजिटरी में मिनगॉ है:

$ 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
यदि आप डेबियन का उपयोग करते हैं, तो mingw32 पहले से ही रिपॉजिटरी में है, साथ में कुछ पहले से तैयार लाइब्रेरी भी।
लियोरी

1
खैर, nongnu.org/mingw-cross-env पर एक क्रॉस-संकलन का माहौल है । इसमें उदाहरण के तौर पर फ्रीग्लूट शामिल हैं। लेकिन मैंने इसका इस्तेमाल नहीं किया है, इसलिए मुझसे इसके बारे में न पूछें;)
एंडीडॉग

4
क्या मिंगवॉ 32 में "32" का मतलब है कि मैं केवल 32-बिट बाइनरी का उत्पादन कर सकता हूं? क्या 64-बिट बाइनरी का उत्पादन करने के लिए एक समाधान है?
bluenote10

1
bluenote10: ऐसे संस्करण हैं जो x64 के लिए निर्मित होते हैं, जैसे "x86_64-w64-mingw32-g ++"। आधार "mingw32" सक्षम हो सकता है या नहीं, लेकिन नाम से वेरिएंट को स्थापित / उपयोग करना काफी आसान है। ar2015: क्या यह C ++ 11 का समर्थन नहीं करता है या आप इसके साथ एक समस्या के बारे में बात कर रहे हैं? मैं बोलने के साथ एक प्रोजेक्ट बनाने पर काम कर रहा हूं, जैसा कि हम बोलते हैं और यह जानने के लिए अच्छी जानकारी होगी। अन्य सूत्र बताते हैं कि यह c ++ 11 (जैसे stackoverflow.com/questions/16136142/… ) का समर्थन करता है । बेशक, मुझे मदद करने में खुशी होगी, लेकिन उसके लिए एक अलग पोस्ट सबसे अच्छा होगा।
जॉन पी

1
क्या हाल ही में इस विषय पर चीजें बदली हैं?
मॉन्ट्रियल

30

लिनक्स में विंडोज के लिए संकलन का एक विकल्प मिंगव के माध्यम से है। मुझे यहाँ एक बहुत ही उपयोगी ट्यूटोरियल मिला ।

डेबियन आधारित सिस्टम पर mingw32 स्थापित करने के लिए, निम्नलिखित कमांड चलाएँ:
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(निर्भरता के रूप में चिह्नित)। यदि आप उन्हें निर्दिष्ट करते हैं, तो वे ("मैनुअल" के रूप में चिह्नित) नहीं होंगे।
मैथ्यू

19

सुझाए गए तरीके ने मुझे Ubuntu 16.04 पर त्रुटि दी: E: पैकेज mingw32 का पता लगाने में असमर्थ

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

Ubuntu पर इस पैकेज को स्थापित करने के लिए कृपया निम्नलिखित का उपयोग करें:

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-बिट विंडोज के लिए gccकॉल करने के बजाय i686-w64-mingw32-gccया x86_64-w64-mingw32-gcc"64-बिट विंडोज के लिए। मैं --staticविकल्प का उपयोग भी करूंगा , क्योंकि लक्ष्य प्रणाली में सभी पुस्तकालय नहीं हो सकते हैं।

यदि आप अन्य भाषाओं को संकलित करना चाहते हैं, जैसे फोरट्रान, पिछले आदेशों के -gccसाथ बदलें -gfortran


7

मैंने C पर Windows निष्पादक बनाने के लिए Linux पर mingw का उपयोग किया है, मुझे संदेह है कि C ++ भी काम करेगा।

मेरे पास एक परियोजना है, ईएलएलसीसी, जो संकुल और अन्य चीजों को क्रॉस कंपाइलर टूल चेन के रूप में समेटती है। मैं इसका उपयोग विंडोज़ के लिए क्लैंग (सी ++), बिनुटिल्स और जीडीबी को संकलित करने के लिए करता हूं। कई लिनक्स होस्ट के लिए पूर्व संकलित बायनेरिज़ के लिए ellcc.org पर डाउनलोड लिंक का पालन करें ।


1
जब से मैंने वह जवाब पोस्ट किया है, मैं थोड़ा आगे बढ़ गया हूं। मेरे पास एक परियोजना है, ईएलएलसीसी, जो संकुल और अन्य चीजों को क्रॉस कंपाइलर टूल चेन के रूप में समेटती है। मैं इसका उपयोग विंडोज़ के लिए क्लैंग (सी ++), बिनुटिल्स और जीडीबी को संकलित करने के लिए करता हूं। कई लिनक्स होस्ट के लिए पूर्व संकलित बायनेरिज़ के लिए ellcc.org पर डाउनलोड लिंक का पालन करें ।
रिचर्ड पेंनिंगटन

5

प्रेषक: https://fedoraproject.org/wiki/MinGW/Tutorial

फेडोरा 17 के रूप में यह win32 और win64 के लक्ष्यों के लिए आसानी से (क्रॉस-कंपाइल) बायनेरिज़ का निर्माण करना संभव है। यह mingw-w64 toolchain: http://mingw-w64.sf.net/ का उपयोग करके महसूस किया गया है । इस टूलकिन का उपयोग करने से आप निम्नलिखित प्रोग्रामिंग भाषाओं के लिए बायनेरिज़ का निर्माण कर सकते हैं: C, C ++, Objective-C, Objective-C ++ और Fortran।

"Windows क्रॉस-कंपाइलर का उपयोग करने के लिए युक्तियाँ और चालें": https://fedoraproject.org/wiki/MinG//ips


3

फेडोरा के लिए

sudo yum groupinstall -y "MinGW cross-compiler"

1
उन सभी फेडोरा उपयोगकर्ताओं के लिए: यहाँ एक महान ट्यूटोरियल है: fedoraproject.org/wiki/MinGW (गलत लिंक के कारण संपादित)
LemurPwned

ठीक वही जो मेरे द्वारा खोजा जा रहा था! के साथ sudo dnf groupinstall ...भी काम करता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.