32 बिट शेल से 64 बिट प्रोग्राम चलाएं


1

मैंने हाल ही में Cygwin से WSL में स्विच किया और Sourcetree और commithooks के साथ एक समस्या है।

सॉरीट्री, गिट चलाने के लिए सिगविन (32 बिट) के अपने संस्करण का उपयोग करता है। मेरा विकास पर्यावरण WSL पर चलता है (जो केवल 64 बिट है)।

तो मैं क्या करना चाहता हूँ Sourcetrees Cygwin बैश से WSL बैश कॉल करें और कमिट किए गए चेक निष्पादित करें। लेकिन यह काम नहीं करता है, क्योंकि सिग्विन बैश एक 32 बिट प्रोग्राम है और इस तरह डब्ल्यूएसएल बैश को निष्पादित नहीं किया जा सकता है, जो केवल 64 बिट है। इसलिए साइग्विन बैश WSL बैश को एक गैर-निष्पादन योग्य फ़ाइल के रूप में देखता है।

क्या 64 बिट प्रोग्राम को कॉल करने के लिए विंडोज 10 पर 32 बिट सैंडबॉक्स से बाहर निकलने का एक तरीका है?


1
चूंकि सिग्विन बैश एक 32 बिट प्रोग्राम है और इस प्रकार डब्ल्यूएसएल बैश को निष्पादित नहीं किया जा सकता है, जो केवल 64 बिट है - हुह? मेरे ज्ञान का सबसे अच्छा करने के लिए, वहाँ कुछ भी नहीं रोक रहा है कि आप किसी भी तरह से कॉल कर रहे हैं, इसके अलावा शायद 64-बिट निष्पादन योग्य (वाह फाइल सिस्टम पुनर्निर्देशन का कारण, जो केवल प्रोग्राम फ़ाइलों और सिस्टम 32 पर लागू होता है) को खोजने में सक्षम नहीं है। यदि यह आपकी समस्या है, तो इसके आसपास के तरीके हैं: stackoverflow.com/questions/39812882/…
बॉब

1
@ 32-बिट Win32 प्रोग्राम समस्या के बिना 64-बिट विंडोज ऐप चला सकता है। हालांकि WSL केवल 64-बिट ELF निष्पादक का समर्थन करता है और आप 32-बिट लिनक्स ऐप्स नहीं चला सकते हैं
phuclv

आपका W10 32 या 64-बिट है?
Overmind

@ LưuV LnhPhúc मैंने इस सवाल को 32-बिट विंडोज पीई प्रोग्राम के रूप में लिया, जिसे 64-बिट विंडोज पीई प्रोग्राम (bash.exe, WSL के लिए आक्रमणकारी के रूप में) कहा गया। किसी भी बिंदु पर 32-बिट ईएलएफ शामिल नहीं है।
बॉब

@ ऑवरमाइंड डब्ल्यूएसएल केवल 64-बिट है
फुलकव

जवाबों:


1

आपने यहां जो भी सामना किया है वह WOW64 फाइल सिस्टम पुनर्निर्देशन है । क्योंकि bash.exeमें जीवन 64-बिट System32 निर्देशिका, लेकिन 32-बिट प्रोग्राम देखने के 32-बिट SysWOW64 जब वे के लिए पूछना System32। यह 32-बिट से 64-बिट को चलाने में असमर्थ होने की बात नहीं है, बल्कि उस निष्पादन योग्य को खोजने में सक्षम नहीं है जिसे आप पहली बार में चलाने की कोशिश कर रहे हैं।

आपके पास इसके आसपास एक रास्ता है। उस लिंक से उद्धरण:

32-बिट अनुप्रयोग% windir% \ System32 के लिए% windir% \ Sysnative को प्रतिस्थापित करके मूल सिस्टम निर्देशिका तक पहुँच सकते हैं। WOW64 Sysnative को एक विशेष उपनाम के रूप में पहचानता है जिसका उपयोग यह इंगित करने के लिए किया जाता है कि फ़ाइल सिस्टम पहुंच को पुनर्निर्देशित नहीं करना चाहिए।

तो बस के माध्यम से स्पष्ट रास्ता कहते हैं sysnative: %windir%\Sysnative\bash.exe(या $WINDIR/Sysnative/bash.exeसाइबरविन के भीतर)।


धन्यवाद, मैं 64-बिट निष्पादन योग्य नहीं बल्कि 32-बिट निष्पादन योग्य SysWOW64 के साथ भ्रमित हो गया।
डकारन

0

नहीं, सीधे नहीं अगर आपका ओएस 32-बिट है, लेकिन इसके लिए आप 64-बिट वीएम सत्र बना सकते हैं यदि आपके पास 64-बिट प्रोसेसर है, लेकिन 32-बिट होस्ट ओएस स्थापित किया है।


प्रश्न फिर से पढ़ें। ओपी में 32 बिट ओएस नहीं है।
DavidPostill

यह ओएस के लिए निर्दिष्ट नहीं किया गया था।
Overmind

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