2009-09-25 17 views
6

मेरे पास विंडोज़ पर साइगविन है जिसके माध्यम से मैं जीसीसी चलाता हूं। लेकिन .exe फ़ाइलों को बनाने के बाद, यदि मैं उन अन्य कंप्यूटरों पर चलाता हूं जिनमें साइगविन नहीं है, तो यह कहता है कि cygwin1.dll नहीं मिला है। क्या उन्हें संकलित करने का कोई तरीका है ताकि वे किसी भी सिस्टम पर चल सकें?जीसीसी (विंडोज़ पर सिग्विन) के साथ संकलन

उत्तर

10

आपके मामले में, cygwin1.dll कॉपी करने के लिए और साथ ही कोशिश (लेकिन यह अन्य DLLs पर साथ ही निर्भर कर सकता है) (बेशक आप cygwin1.dll वितरण करने के लिए Cygwin के license संबंध का पालन करना चाहिए)
cygwin में , आप हमेशा का उपयोग कर की जरूरत है मॉड्यूल की जाँच कर सकते हैं:

objdump -p a.exe | grep 'DLL Name' 

या

cygcheck ./a.exe 

या सामान्य रूप में खिड़कियों के लिए, इस उपकरण की तरह कुछ का उपयोग करें: Dependency Walker

+0

साइगचेक कहता है: "त्रुटि: a.exe नहीं मिल सका" अगर मैं "cygcheck a.exe" लिखता हूं – avd

+2

उपयोग: "cygcheck ./a.exe" – Amro

4

आप कमांड लाइन विकल्प -mno-cygwin के साथ संकलित करने का प्रयास कर सकते हैं।

11

आपको मिनीजीडब्ल्यू (न्यूनतम जीएनयू Win32) मोड के लिए संकलित करने की आवश्यकता है। आप या तो सिगविन जीसीसी के लिए (या इसके अलावा) सिग्विन के बजाय mingw इंस्टॉल करके या - एमनो-सिग्विन कंपाइलर विकल्प को पास करके ऐसा करते हैं।

+0

लेकिन मैं अपने कार्यक्रम में कांटा समारोह का उपयोग कर रहा हूं। अगर मैं -मोनो-साइगविन का उपयोग करता हूं, तो यह फोर्क परिभाषित नहीं करता है। – avd

+2

फिर आपको अपने उपयोगकर्ताओं को cygwin1.dll प्रदान करना होगा। विंडोज़ स्वयं एक कांटा() सिस्टम कॉल प्रदान नहीं करता है। फोर्क का उपयोग न करने के लिए अपने कोड को फिर से लिखना सबसे अच्छा होगा। –

1

Cygwin FAQ देखें।

+0

लाइसेंस समस्या का उल्लेख करने के लिए धन्यवाद – Amro

0

http://cygwin.com/faq/faq.html#faq.programming.win32-no-cygwin

से मैं एक Win32 निष्पादन योग्य है कि Cygwin का उपयोग नहीं करता कैसे संकलित करते हैं?

mingw-gcc, mingw64-i686-gcc, और mingw64-x86_64-gcc संकुल द्वारा प्रदान किए गए कंपाइलर्स सिगविन के बजाय मानक माइक्रोसॉफ्ट डीएलएल के खिलाफ लिंक। यह मूल विंडोज प्रोग्राम के लिए वांछनीय है जिसे यूनिक्स इम्यूलेशन परत की आवश्यकता नहीं है।

यह 'मिनीजीडब्लू' (विंडोज़ के लिए न्यूनतमतम जीएनयू) के साथ भ्रमित नहीं होना चाहिए, जो एक पूरी तरह से अलग प्रयास है।

संबंधित मुद्दे