मैंने एक गेम (शंक) डाउनलोड किया है लेकिन बिन फ़ाइल नहीं चलती है। जब मैं निष्पादन योग्य लॉन्च करने का प्रयास करता हूं, तो यह त्रुटि दिखाई देती है:
bash: ./shank-linux-120720110-1-bin: No such file or directory
मैंने एक गेम (शंक) डाउनलोड किया है लेकिन बिन फ़ाइल नहीं चलती है। जब मैं निष्पादन योग्य लॉन्च करने का प्रयास करता हूं, तो यह त्रुटि दिखाई देती है:
bash: ./shank-linux-120720110-1-bin: No such file or directory
जवाबों:
आप शायद 64-बिट सिस्टम पर 32-बिट बाइनरी चलाने की कोशिश कर रहे हैं जिसमें 32-बिट समर्थन स्थापित नहीं है।
ऐसे तीन मामले हैं जहाँ आप संदेश प्राप्त कर सकते हैं "ऐसी कोई फ़ाइल या निर्देशिका नहीं":
file shank-linux-120720110-1-bin
"ELF 32-बिट LSB निष्पादन योग्य ...") जैसा कुछ प्रदर्शित करता है, और फिर भी जब आप इसे निष्पादित करने का प्रयास करते हैं तो आपको बताया जाता है कि फ़ाइल मौजूद नहीं है।इस अंतिम मामले में त्रुटि संदेश भ्रामक है। यह आपको बता रहा है कि प्रोग्राम को चलाने के लिए आवश्यक रनटाइम वातावरण का एक महत्वपूर्ण घटक गायब है। दुर्भाग्य से, जिस चैनल के माध्यम से त्रुटि की सूचना दी गई है, उसमें केवल त्रुटि कोड के लिए जगह है और इस अतिरिक्त जानकारी के लिए नहीं है कि यह वास्तव में रनटाइम वातावरण है जिसे दोष देना है। यदि आप इस स्पष्टीकरण का तकनीकी संस्करण चाहते हैं, तो 64-बिट सिस्टम पर 32-बिट बाइनरी चलाते समय संदेश "नहीं मिला" संदेश पढ़ें ।
file
आदेश आपको बता देंगे क्या इस द्विआधारी है। कुछ अपवादों के साथ, आप केवल प्रोसेसर आर्किटेक्चर के लिए एक बाइनरी चला सकते हैं जो आपके उबंटू की रिलीज के लिए है। मुख्य अपवाद यह है कि आप 64-बिट (amd64, उर्फ x86_64) सिस्टम पर 32-बिट (x86, उर्फ IA32) बायनेरिज़ चला सकते हैं।
उबंटू में 11.04 तक, 64-बिट इंस्टॉलेशन पर 32-बिट बाइनरी चलाने के लिए, आपको पैकेज स्थापित करने कीia32-libs
आवश्यकता है । आपको अतिरिक्त लाइब्रेरी स्थापित करने की आवश्यकता हो सकती है (यदि आप करते हैं तो आपको एक स्पष्ट त्रुटि संदेश मिलेगा)।
चूंकि 11.10 ( वनिरिक ) ने मल्टीकार सपोर्ट पेश किया था , आप अभी भी इंस्टॉल ia32-libs
कर सकते हैं, लेकिन आप एक महीन-बारीक दृष्टिकोण चुन सकते हैं, यह प्राप्त करने के लिए पर्याप्त है (साथ ही कोई अन्य आवश्यक लाइब्रेरी)।libc6-i386
ldd
यदि आप किसी लाइब्रेरी को याद कर रहे हैं, तो आप इसका उपयोग कर सकते हैं । दूसरों के बीच ldd kgio_ext.so
कुछ कह सकते हैंlibruby.so.2.3 => not found
bash: ...some...path...: No such file or directory
दिखा सकते हैं: निष्पादन योग्य फ़ाइल को स्थानांतरित करने के बाद। बैश $ PATH में पाए जाने वाले एग्जीक्यूटिव्स को कैश पथ के लिए लगता है; hash -r
इसे साफ़ करने के लिए दौड़ें । देखें: unix.stackexchange.com/a/5610/11352
file file-name
शो के आउटपुट ,
file-name: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped
एक 64 बिट बहु मेहराब उबंटू प्रणाली में 32 बिट निष्पादन योग्य फ़ाइल चलाने के लिए आपको जोड़ने के लिए i386
वास्तुकला और भी आप स्थापित किया है libc6:i386
, libncurses5:i386
, libstdc++6:i386
इन तीन पुस्तकालय संकुल।
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
./file-name
libselinux1:i386
32 बिट के लिए बहस को स्थापित करके मैंने महसूस किया कि मैं कुछ पुस्तकालयों (ia32-libs और libc6 के अलावा) को याद कर रहा था। मैंने पहली बार इस कमांड को देकर इस समस्या को हल किया:
sudo apt-get install -f
फिर मुझे एक और त्रुटि मिली:
Message: SDL_GL_LoadLibrary
Error: Failed loading libGL.so.1
जाहिर है, इन पुस्तकालयों को ठीक से स्थापित किया गया था। विवरण में जाने के बिना मुझे पुस्तकालयों को हाथ से जोड़ना था। मुझे तब एहसास हुआ कि Synaptic के माध्यम से एक आसान समाधान भी निम्नलिखित पैकेजों को स्थापित कर सकता है:
libgl1-mesa-glx:i386
libgl1-mesa-dri: i386.
उसके बाद खेलने के दौरान अगली समस्या काली स्क्रीन की थी, जिसे मैंने इसके साथ निष्पादन योग्य / शंक / बिन में बदलकर हल किया: http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-tub.tar .bz2 ।
मुझे उम्मीद है कि यह किसी के लिए उपयोगी होगा। यदि आपको अधिक सहायता या अधिक विवरण की आवश्यकता है, तो कृपया मुझसे संपर्क करने में संकोच न करें।
यहां समस्या की प्रकृति के बारे में थोड़ा और दिखाया गया है, और इसे उबंटू 16.04 के रूप में कैसे ठीक किया जाए, इसकी एक प्रतिलेख है। ध्यान दें कि भले ही file
रिपोर्ट "डायनेमिकली लिंक्ड" हो, ldd
रिपोर्ट्स "डायनामिक एक्ज़ीक्यूटेबल नहीं"।
$ ./myprogram
bash: myprogram: No such file or directory
$ file myprogram
myprogram: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped
$ ldd myprogram
not a dynamic executable
एक बार जब आप libc6: i386 को स्थापित करते हैं, तो चीजें बेहतर होने लगती हैं ...
$ sudo apt-get install libc6:i386 # the initial fix
...
$ ldd myprogram
linux-gate.so.1 => (0xf77fd000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7626000)
/lib/ld-linux.so.2 (0x56578000)
$ ./myprogram
myprogram: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
काम पूरा करने के लिए, आपको एक बार में अतिरिक्त पुस्तकालयों को पहचानने और स्थापित करने की आवश्यकता हो सकती है ...
$ sudo apt-get install libstdc++6:i386 ## may require various additional libs
$ ./myprogram
... works correctly ...
मुझे पता नहीं है कि स्थापित करने के लिए सही पुस्तकालयों की पहचान करने का एक व्यवस्थित तरीका है या नहीं। पैकेज के नाम (टैब पूरा होने में मदद) में त्रुटि संदेशों की मैपिंग का थोड़ा सा अनुमान है।
ldd
(गलत तरीके से) रिपोर्ट "एक गतिशील निष्पादन योग्य नहीं"।
@ उत्तर का विस्तार करने के लिए, इस त्रुटि के परिणामस्वरूप कम से कम तीन परिदृश्य हैं:
file
कमांड काम करता है), एक गड़बड़ी त्रुटि संदेश के लिए बना रहा है। इसका मतलब लोडर के साथ कोई समस्या हो सकती है।लोडर समस्याओं की श्रेणियाँ:
एक निष्पादन योग्य लोडर मौजूद नहीं है। आप फ़ाइल कमांड का उपयोग करके इसे देख सकते हैं और देख सकते हैं कि लोडर मौजूद है या नहीं। उदाहरण के लिए
file lmgrd
lmgrd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-lsb-x86-64.so.3, for GNU/Linux 2.6.18, stripped
सूचना interpreter /lib64/ld-lsb-x86-64.so.3
; यदि यह फ़ाइल मौजूद नहीं है, तो आपको इसे स्थापित करने की आवश्यकता है। 16.04 पर इस विशेष लोडर के लिए, उत्तर निकला sudo apt-get install lsb
।
स्क्रिप्ट के लोडर के साथ समस्याएँ ( इस उत्तर को देखें )।
ldd <file-name>
किसी भी "नहीं मिला" पुस्तकालयों की जांच के लिए उपयोग करें। अधिक जानकारी के लिए यह उत्तर देखें ।लोडर मौजूदा नहीं 32/64 बिट बेमेल या किसी अन्य कारण से हो सकता है। लोडर त्रुटियों के अन्य प्रकार हो सकते हैं जिनके बारे में मुझे जानकारी नहीं है।
file lmutil
दुभाषिया नहीं दिखा, लेकिन ldd
किया और lsb
समस्या को हल किया।