लिनक्स पर विंडोज़ का काम क्यों नहीं होगा?


29

मैं लिनक्स में विंडोज एक्सई काम करने के तरीके के बारे में नहीं पूछ रहा हूं ।

मैं क्यों पूछ रहा हूं कि यह काम नहीं करता है।

विंडोज एक निष्पादन योग्य और लिनक्स एक निष्पादन योग्य चलाने के तरीके के बारे में क्या अलग है? उन्हें अलग क्यों होना पड़ा? इसके अलावा, linux execables में फाइल एक्सटेंशन क्यों नहीं है?


जवाबों:


45

लिनक्स और विंडोज निष्पादन योग्य विभिन्न स्वरूपों का उपयोग करते हैं। लिनक्स अधिकांश आर्किटेक्चर पर ईएलएफ प्रारूप का उपयोग करता है , जबकि विंडोज पीई प्रारूप का उपयोग करता है । जिस तरह से लिनक्स पुस्तकालयों का प्रबंधन करता है, उसी तरह ELF बेहतर अनुकूल है, और Windows के पुस्तकालयों को साझा करने के तरीके के लिए PE बेहतर है, लेकिन ऐसा कोई मूलभूत कारण नहीं है कि लिनक्स PE निष्पादक या Windows ELF निष्पादनयोग्य का निष्पादन न कर सके। वास्तव में लिनक्स शराब के माध्यम से पीई निष्पादनयोग्य निष्पादित कर सकता है

कठिनाई यह है कि विंडोज और लिनक्स में पूरी तरह से अलग एपीआई हैं : उनके पास पुस्तकालयों के विभिन्न कर्नेल इंटरफेस और सेट हैं। इसलिए वास्तव में एक विंडोज एप्लिकेशन चलाने के लिए, लिनक्स को सभी एपीआई कॉल का अनुकरण करने की आवश्यकता होगी जो एप्लिकेशन बनाता है। वह बहुत काम की चीज है। शराब कुछ हद तक ऐसा करती है, लेकिन यह बहुत कठिन है, खासकर जब से विंडोज का निर्माता सहयोग नहीं करता है। आप इसकी तुलना कर सकते हैं, कह सकते हैं कि, अंग्रेजी सीखना जब आपकी मूल भाषा चीनी है: निष्पादन योग्य प्रारूप वर्णमाला है (मास्टर करने के लिए कठिन नहीं है), एपीआई शब्दावली है (एक स्तर तक पहुंचने में वर्षों लगते हैं जहां आप साहित्य पढ़ना शुरू कर सकते हैं )।


9
"शब्दावली" एक उत्कृष्ट सादृश्य है।
अगली सूचना तक रोक दिया गया।

मुझे लगता है कि आप पूरी तरह से अलग थे
मेरिसा चीरा

यदि वे ARM के लिए संकलित हैं तो Android Linux bnaries (संकुल नहीं) का समर्थन करता है क्योंकि यह Linux पर आधारित है
Suici Doga

@SuiciDoga की तरह, लेकिन यह उससे कहीं अधिक जटिल है। एंड्रॉइड कर्नेल लिनक्स बायनेरिज़ चला सकते हैं (यदि वे सही कर्नेल एबीआई के लिए संकलित हैं, उदाहरण के लिए नीयन रजिस्टर का उपयोग), लेकिन यदि आप गतिशील रूप से जुड़े प्रोग्राम चलाना चाहते हैं, तो आपको सभी लाइब्रेरी भी स्थापित करनी होंगी। (और अगर आप ऐसा करते हैं कि आप एक पैकेज मैनेजर भी स्थापित कर सकते हैं, तो "बायनेरीज़, लेकिन पैकेज नहीं" वास्तव में सच नहीं है।)
गाइल्स का SO- दुष्ट होना बंद '

हां, मुझे इस बारे में पता है कि आपको पुस्तकालय पथ आदि को बदलना होगा
Suici Doga

14

विंडोज बायनेरिज़ में एक अलग ABI है और लिनक्स बायनेरिज़ की तुलना में एक अलग API का उपयोग करें ।

लिनक्स बायनेरिज़ को एक्सटेंशन की आवश्यकता नहीं है क्योंकि * निक्स एक्सटेंशन के बजाय एक निष्पादन योग्य की पहचान करने के लिए अनुमति बिट्स का उपयोग करता है ।


1
उत्तर से सहमत ... डेटा का अतिरिक्त टुकड़ा जो प्रासंगिक हो सकता है: ELF ( en.wikipedia.org/wiki/Executable_and_Linkable_Format ) बनाम PE ( en.wikipedia.org/wiki/PE_exitable )
रोबॉटहैंस

आह हाँ, इसके लिए अलग लोडर की भी जरूरत है। en.wikipedia.org/wiki/Loader_%28computing%29
इग्नासियो वाज़केज़-अब्राम्स

मुझे विशेष रूप से @Gilles द्वारा उत्तर से गायब जानकारी का दूसरा टुकड़ा पसंद है।
टिमोथी गु

@ इग्नासियोवेज़क्वेज़-एबर्स यह बहुत दिलचस्प है। क्या होगा अगर मैंने आपसे कहा कि मैं सिर्फ Ubuntu 16.04 लिनक्स पर मूल रूप से एक विंडोज़ गेम PlantsVsZili.exe चलाऊँ? मैंने बस यह जानकर बोरियत से बाहर निकल लिया कि यह लॉन्च नहीं होगा, लेकिन यह किया और मैं इसे पूरी तरह से खेल सकता हूं। यह असंभव जैसा है, क्योंकि उस खेल को पहले चलाने के लिए स्टीम एपी की जरूरत है और यह स्पष्ट रूप से नहीं हुआ। कैसे हुआ लॉन्च ??? क्या मुझे उसके लिए एक नया प्रश्न बनाना चाहिए?
निकोस

@ RestlessC0bra: वाइन और मोनो चीजें हैं।
इग्नासियो वाज़केज़-अब्राम्स

0

यह है कि कैसे मैं प्रोग्रामर से आम शब्दों में समझाया विंडोज पक्ष सुना है।

विंडोज में प्रोग्राम्स और OS में हुक होते हैं, जो Exe के कॉल करते हैं, बस लिनक्स में नहीं होंगे। दोनों वातावरणों में अंतर के कारण। प्रारंभ में लिनक्स अनुमतियों के लिए दिखता है, विंडोज एक्सटेंशन की जांच करके, गुणों को देखकर और फिर Exe के अंदर देखने आदि द्वारा एक लिंक करने योग्य प्रारूप की तलाश करता है।

नेटबैकअप जैसे एप्लिकेशन हैं जो लिनक्स में शुरू हुए और वाइन आईएमएचओ का उपयोग करके खिड़कियों के वातावरण में चलाने के लिए संशोधित किया गया है, अक्सर वे सबसे स्थिर व्यवहार वाले विंडोज ऐप्स में से कुछ हैं।

जब विंडोज एप्स। अनियंत्रित हो जाना आमतौर पर ऐसा इसलिए होता है क्योंकि एप्लिकेशन द्वारा रखे गए कुछ हुक पूरी तरह से जारी नहीं किए गए थे और विंडोज़ को लगता है कि वे (मेमोरी लीक्स) थे। जब विंडोज हाथ में है जो अप्रतिबंधित मेमोरी स्पेस को किसी अन्य एप्लिकेशन को क्रैश और जला देता है।


2
किसी तरह मैं विश्वास करना चाहूंगा कि बिल गेट्स ने मेरे प्रश्न का उत्तर ;-)
नव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.