2009-12-12 13 views
11

पर लिनक्स या ईएलएफ पर सीओएफएफ क्या यूनिक्स पर सीओएफएफ निष्पादन योग्य फाइलों को चलाने या विंडोज़ पर ईएलएफ निष्पादन योग्य फाइलों को चलाने के लिए संभव है? और विंडोज़ और यूनिक्स पर फ़ाइल प्रकार चलाने में सक्षम होने के लिए क्या कदम होंगे। मैं सिर्फ उत्सुक हूँ।विंडोज

+0

[यूनिक्स-आधारित अनुप्रयोग अवलोकन के लिए सबसिस्टम] (http://technet.microsoft.com/en-us/library/cc771672.aspx#BKMK_PortAppsSUA) [http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX] (http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX) – abmv

+0

एसएफए/एसयूए केवल एनटी के लिए संकलित पीई निष्पादन योग्य चलाता है। – ephemient

उत्तर

7

वास्तव में निष्पादनयोग्य चलाने के लिए और उन्हें उपयोगी चीजें करते करवाने के लिए, आप एपीआई ही नहीं, निष्पादन योग्य फ़ाइल स्वरूप के बारे में चिंता करने की जरूरत। WINE इंस्टॉल के साथ एक लिनक्स मशीन पर, आप कमांड लाइन से Windows .EXE फ़ाइलों को चला सकते हैं और वे वही काम करते हैं जो वे विंडोज पर करते हैं।

दूसरी तरफ वास्तव में संभव नहीं है, हालांकि यदि आप विंडोज मशीन पर CYGWIN स्थापित करते हैं, और फिर CYGWIN कंपाइलर्स के साथ स्रोत से एप्लिकेशन को पुनर्निर्माण करते हैं, तो आपको एक निष्पादन योग्य मिलेगा जो विंडोज पर चलता है और वही काम करता है लिनक्स पर लिनक्स निष्पादन योग्य है। मानक लिनक्स टूल के बहुत सारे पहले ही पोर्ट किए गए हैं और सीवाईजीविन रिपोजिटरी में एक्स-विंडोज और जीआईएमपी जैसी चीजें शामिल हैं।

+0

जैसा कि मैंने किसी अन्य उत्तर में टिप्पणी की, http://sf.net/projects/line/ ने वाइन के विपरीत होने का प्रयास किया, विंडोज़ पर असम्बद्ध लिनक्स बाइनरी चला रहा था। परियोजना को अब वर्षों से छोड़ दिया गया है, लेकिन यह निश्चित रूप से दिखाता है कि अवधारणा संभव है। अगर मुझे सही तरीके से याद किया जाता है, तो यह कुछ स्थैतिक रूप से जुड़े कंसोल प्रोग्राम चला सकता है, और आईपीसी काम में था। – ephemient

1

Coff मूल रूप से यूनिक्स द्वारा पेश किया गया था (लगभग सिस्टम वी या आस) तो हाँ, कुछ यूनिक्स शायद अभी भी Coff प्रारूप का समर्थन करता है। इसे कम से कम थोड़ी देर के लिए लिनक्स द्वारा बहिष्कृत कर दिया गया है, और संभवतः अधिकांश अन्य इकाइयों ने भी समर्थन को हटा दिया है या समर्थन छोड़ दिया है। कुछ गहरी प्रवंचना बिना वहाँ नहीं लगभग निश्चित रूप से -

विंडोज ELF समर्थन में थोड़ा और अधिक iffy है। आप आप यहाँ कर की कोशिश कर रहे के बारे में अधिक विशिष्ट होना चाहिए ...

+1

http://sf.net/projects/line/ ने विंडोज़ पर ईएलएफ निष्पादन योग्य लोड करने का प्रबंधन किया - यह किसी के लिए प्रेरित करने के लिए एक अच्छा प्रारंभिक बिंदु हो सकता है। – ephemient

3

http://lbw.sourceforge.net/ लाइन से बेहतर काम करता है। कम एक ही काम करने के लिए एक और परियोजना थी, लेकिन वह कम काम कर रहा था।

संपादित करें: http://atratus.org/ Interix/SFU के लिए आवश्यकता के बिना, साथ भी ऐसा ही लगता है।

2

ठीक से आपके प्रश्न का उत्तर के लिए, यह समीक्षा करने के लिए क्या ELF, coff, और पीई हैं प्रासंगिक है। ये बाइनरी प्रारूप अनिवार्य रूप से केवल कंटेनर हैं जो फ़ाइल में निहित कच्चे CPU निर्देशों को निष्पादित करने के तरीके के बारे में ऑपरेटिंग सिस्टम को दिशानिर्देश देते हैं। वे एमकेवी, डब्लूएमवी, और ओजीजी जैसे ऑडियो/वीडियो कंटेनर की तरह बहुत अधिक हैं। निष्पादन योग्य प्रारूप के लिए समर्थन या तो ऑपरेटिंग सिस्टम में है या नहीं। माइक्रोसॉफ्ट विंडोज ने हाल ही में सीओएफएफ या ईएलएफ के लिए लगातार कोई समर्थन नहीं दिया है। विंडोज 10 के साथ, माइक्रोसॉफ्ट ने विंडोज कर्नेल उपयोगकर्तामोड-लिनक्स संगत सिस्टम दिनचर्या में ईएलएफ के लिए अप्रत्यक्ष समर्थन प्रदान किया है। एक उपयोगकर्तामोड लिनक्स कर्नेल विंडोज कर्नेल के शीर्ष पर चलता है और लगभग सभी ईएलएफ बाइनरी प्रारूपों को चलाता है जैसे कि यह एमएस विंडोज से स्वतंत्र हो रहा था। एपीआई:

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

रिवर्स, प्रश्न का दूसरा भाग, लिनक्स पर पीई (सबसे माइक्रोसॉफ्ट विंडोज निष्पादनयोग्य) चल रहा साथ ही संभव है। दो रनटाइम रैपिंग लाइब्रेरीज़ हैं जो एमएसआईएल (वर्चुअल मशीन एप्लिकेशन) और विन 32 (सामान्य सीपीयू एप्लीकेशन) चला सकते हैं। चूंकि लिनक्स कर्नेल एक निश्चित बाइट प्रारूप को पहचानने के लिए विस्तारित है, इसलिए एक उपयुक्त रैपर प्रोग्राम चलाएं, असल में कर्नेल पीई और संभावित रूप से अधिक निष्पादन योग्य कंटेनर प्रारूपों का समर्थन करता है। इसलिए, लिनक्स कुछ पीई प्रोग्रामों को या तो मोनो रनटाइम (.NET/C# अनुप्रयोगों) में या वाइन रनटाइम (Win32 C/C++) में चला सकता है।

उपयोगकर्तामोड-लिनक्स पर्यावरण स्थापित करने के लिए आप Microsoft's Development Network पर दिए गए निर्देशों का पालन कर सकते हैं। संक्षेप में:

  1. डेवलपर मोड चालू करें: सेटिंग्स | अद्यतन & सुरक्षा | डेवलपर्स के लिए | डेवलपर मोड रेडियो बटन
  2. प्रारंभ मेनू से जाँच करें, खुला "मुड़ें विंडोज सुविधाओं को चालू या बंद" नीचे
  3. स्क्रॉल करें और जाँच "Windows सबसिस्टम लिनक्स (बीटा) के लिए" सुविधा
  4. हिट ठीक और रिबूट (आवश्यक कदम)
  5. एक बार रिबूट, एक PowerShell/कमांड प्रॉम्प्ट खोलने के लिए और चलाने "बैश" और विहित का लाइसेंस स्वीकार करते हैं और गेंद मारना उबंटू छवि के डाउनलोड
  6. डाउनलोड पूर्ण होने के बाद, आप हो जाएगा करने के लिए सरल संकेतों का पालन करें प्रारंभ मेनू
से "विंडोज पर उबंटू पर बैश" शुरू करने में सक्षम

ध्यान रखें कि यह विधि केवल विंडोज 10 पर काम करती है और अभी भी टेक्स्ट-मोड कंसोल तक सीमित है और Xorg के Win32 पोर्ट को कुछ भी ग्राफिकल के लिए vcXsrv की तरह सीमित है। सिगविन या एमएसवाईएस 2 सिस्टम ईएलएफ बाइनरी चलाने में सक्षम नहीं हैं, लेकिन एक ही अनुप्रयोग को पोर्ट करना और चलाने के लिए संभव है जो सामान्य रूप से लिनक्स सिस्टम पर ईएलएफ बाइनरी हैं।

+0

मुझे प्रश्न के दूसरे भाग का जवाब देना चाहिए था। लिनक्स पर पीई (विंडोज़ निष्पादन योग्य) चलाने के कई साधन हैं, क्योंकि लिनक्स कर्नेल एक निश्चित बाइट प्रारूप को पहचानने के लिए विस्तारित है, फिर उपयुक्त रैपर प्रोग्राम चलाएं। इसलिए, लिनक्स कुछ पीई प्रोग्रामों को या तो मोनो रनटाइम (.NET/C# अनुप्रयोगों) में या वाइन रनटाइम (Win32 C/C++) में चला सकता है। –