32-बिट उबंटू सिस्टम पर 64-बिट ऐप चलाएं


10

मेरे द्वारा देखे गए सभी प्रश्न 64-बिट सिस्टम में 32-बिट ऐप को चलाने का संदर्भ देते हैं।

मैं 32-बिट Ubuntu 12.04 (वास्तव में प्राथमिक ओएस लूना, जो इस पर आधारित है) चला रहा हूं और मैं 64-बिट ऐप चलाने की कोशिश कर रहा हूं जो खुले में मना कर देता है। चल रहा है:

./64bit_app.run

(जहां 64bit_app.run64-बिट ऐप मैं चलाने की कोशिश कर रहा हूं) में परिणाम है:

bash: ./64bit_app.run: no se puede ejecutar el fichero binario

जो " बाइनरी फ़ाइल को निष्पादित / रन / ओपन नहीं कर सकता है" का अनुवाद करता है ।

क्या मुझे इसे चलाने में सक्षम होना चाहिए? क्या 32-बिट सिस्टम में 64-बिट ऐप चलाना संभव है? यदि हां, तो कैसे?


मैंने यह कोशिश नहीं की है, लेकिन क्या आपने यहां दिखाए गए समाधानों का प्रयास किया है , जो सटीक रूप से समझा रहा है dpkg --add-architecture? जहाँ तक मुझे पता है, वही दृष्टिकोण 32 पर 64 के लिए और 64 पर 32 के लिए काम करना चाहिए। बस के लिए बदल dpkg --add-architecture i386जाते हैं dpkg --add-architecture amd64
terdon

1
आप कर , सही 64-बिट हार्डवेयर है? (सिर्फ यह सुनिश्चित करने के लिए)
स्ट्रैजी

"जो खुले में मना करता है"? बिल्कुल कैसे?
Braiam

1
कृपया मेरे द्वारा जुड़े प्रश्न के उत्तर पढ़ें , आपको sudo dpkg --add-architecture amd64पहले दौड़ने की आवश्यकता है । वह एक अलग कमांड है।
terdon

1
@terdon क्षमा करें, मुझे यह समझ में नहीं आया। उस पंक्ति को चलाने से परिणाम मिलता है: dpkg: error: opción --add-architecture desconocidaजहाँ desconocidaअनुवाद होता है unknown
गेब्रियल

जवाबों:


8

आप एक 32 बिट कर्नेल के साथ x86_64 पर सीधे लिनक्स पर ऐसा नहीं कर सकते। आपको 64 बिट कोड चलाने में सक्षम होने के लिए 64 बिट कर्नेल की आवश्यकता है। (नोट: कर्नेल। आपके पास 64 बिट कर्नेल पर 32 बिट उपयोगकर्ता चल सकता है, और 64 बिट बायनेरिज़ के लिए समर्थन स्थापित कर सकता है। यह कितना आसान है यह वितरण पर निर्भर करता है। डेबियन के लिए यहां उदाहरण दें ।)

कुछ वर्चुअलाइजेशन सॉफ्टवेयर ऐसा करने में सक्षम है (सीपीयू के उपयोग पर प्रतिबंध के साथ), और एमुलेटर भी ऐसा कर सकते हैं। लेकिन इसे मूल रूप से चलाने के लिए आपको 64 बिट कर्नेल की आवश्यकता होगी।

चूंकि अधिकांश 64 बिट डिस्ट्रीब्यूशन में 32 बिट सपोर्ट (या तो डिफॉल्ट या इंस्टॉल करने योग्य) होता है, वही यदि आप एक ही OS पर 64bit और 32bit बायनेरिज़ दोनों को चलाने के लिए उपयोग करना चाहिए।


7

@ चटाई का उत्तर देना:

हां, कुछ वर्चुअलाइजेशन सॉफ्टवेयर कर सकते हैं। संभालने के लिए मुख्य बाधा यह है कि 32-बिट वातावरण में, सीपीयू की 64-बिट सुविधाएँ उपलब्ध नहीं हैं, और 64-बिट कर्नेल की सुविधाएँ भी उपलब्ध नहीं हैं। यह तब भी है जब आपके सीपीयू को 64-बिट समर्थन (2003 के बाद से, उन सभी के पास है)।

आपका प्रश्न स्पष्ट रूप से बताता है कि आप अपने सिस्टम वातावरण में 64-बिट ऐप चलाना चाहते हैं। यदि यह वास्तव में आपका इरादा है, तो यह सभी वर्चुअल मशीन-आधारित समाधानों को बाहर करता है। केवल शेष जो मेरे लिए जाना जाता है, वह कुमू का कर्नेल-अनुकरण है। इसलिए:

qemu-x86_64 ./your_64bit_app

यह आपके ऐप को आपके वर्तमान सिस्टम पर, आपके वर्तमान कर्नेल के साथ, आपके वर्तमान परिवेश चर के साथ चलाता है । बेशक यह बहुत तेज नहीं है, इसे आपके सीपीयू का अनुकरण करना होगा।

यह केवल linux x86-64 ऐप्स का अनुकरण कर सकता है।


कहीं मैंने भी पढ़ा है, जैसे कि vmware भी ऐसा कर सकता है, लेकिन यह एक उत्तर के लिए पर्याप्त निश्चित जानकारी नहीं है। Afaik हाल के vmware 64 बिट्स हैं-केवल मेजबान की तरफ।
पीटर - मोनिका

1

अधिकांश 64-बिट आर्किटेक्चर 32-बिट वाले एक्सटेंशन हैं। वे नए और पूरी तरह से अलग हैं तो स्पष्ट रूप से एक 32-बिट आर्किटेक्चर को पता नहीं है कि 64-बिट समकक्ष क्या है। वे नहीं जानते कि नई सुविधाएँ क्या हैं, वहाँ कौन से नए रजिस्टर हैं ... भले ही वे जानते हों, उनके पास नई रजिस्टरों और सुविधाओं तक पहुँच नहीं है। परिणामस्वरूप 32-बिट कर्नेल 64-बिट संदर्भों को सहेज नहीं सकता है। यह सब 32-बिट सिस्टम पर 64-बिट ऐप्स चलाना असंभव बना देता है।

64-बिट-अवेयर 32-बिट कर्नेल को सावधानीपूर्वक बनाया गया है, 64-बिट ऐप्स चला सकता है, लेकिन इसे अभी भी कुछ 64-बिट कोड की आवश्यकता है ताकि संदर्भ बचत हो सके, जिससे यह अब शुद्ध 32-बिट कर्नेल नहीं है।

आप एमुलेटर के अंदर 64-बिट ओएस या वीटी-एक्स के साथ 32-बिट होस्ट के अंदर 64-बिट अतिथि वर्चुअल मशीन चला सकते हैं। लेकिन तकनीकी रूप से आप 64-बिट सिस्टम में चल रहे हैं। 32-बिट लिनक्स कर्नेल पर 64-बिट कोड को सीधे चलाना संभव नहीं है

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