Saya sudah mengunduh game (Shank) tetapi file bin tidak berjalan. Kesalahan yang ditampilkan ketika saya mencoba meluncurkan executable adalah:
bash: ./shank-linux-120720110-1-bin: No such file or directory
64-bit
files
games
executable
Francesco
sumber
sumber
Jawaban:
Anda mungkin mencoba menjalankan biner 32-bit pada sistem 64-bit yang tidak memiliki dukungan 32-bit yang diinstal.
Ada tiga kasus di mana Anda bisa mendapatkan pesan "Tidak ada file atau direktori":
file shank-linux-120720110-1-bin
menampilkan sesuatu seperti "ELF 32-bit LSB executable ..."), namun ketika Anda mencoba untuk mengeksekusinya Anda diberitahu bahwa file tersebut tidak ada.Pesan kesalahan dalam kasus terakhir ini memang membingungkan. Apa yang dikatakannya kepada Anda adalah bahwa komponen kunci dari lingkungan runtime yang diperlukan untuk menjalankan program tidak ada. Sayangnya, saluran melalui mana kesalahan dilaporkan hanya memiliki ruang untuk kode kesalahan dan tidak untuk informasi tambahan ini bahwa itu benar-benar lingkungan runtime yang harus disalahkan. Jika Anda menginginkan versi teknis dari penjelasan ini, baca Memperoleh pesan "Tidak ditemukan" saat menjalankan biner 32-bit pada sistem 64-bit .
The
file
perintah akan memberitahu Anda apa biner ini. Dengan beberapa pengecualian, Anda hanya dapat menjalankan biner untuk arsitektur prosesor untuk Ubuntu Anda. Pengecualian utama adalah Anda dapat menjalankan binari 32-bit (x86, alias IA32) pada sistem 64-bit (amd64, alias x86_64).Di Ubuntu hingga 11,04, untuk menjalankan biner 32-bit pada instalasi 64-bit, Anda perlu menginstal
ia32-libs
paket . Anda mungkin perlu menginstal pustaka tambahan (Anda akan mendapatkan pesan kesalahan eksplisit jika melakukannya).Karena 11.10 (oneiric) memperkenalkan dukungan multiarch , Anda masih dapat menginstal
ia32-libs
, tetapi Anda dapat memilih pendekatan yang lebih halus, cukup untuk mendapatkan (ditambah perpustakaan lain yang diperlukan).libc6-i386
sumber
ldd
untuk memeriksa apakah Anda kehilangan perpustakaan.ldd kgio_ext.so
mungkin mengatakan sesuatu sepertilibruby.so.2.3 => not found
antara lainbash: ...some...path...: No such file or directory
bisa muncul: setelah memindahkan file yang dapat dieksekusi. Bash tampaknya men-cache path ke executable yang ditemukan di $ PATH; larihash -r
untuk membersihkannya. Lihat: unix.stackexchange.com/a/5610/1135264 bit sistem Ubuntu Multiarch
Ikuti jawaban ini hanya jika output
file file-name
menunjukkan,Untuk menjalankan file executable 32bit dalam multi-arch sistem Ubuntu 64 bit, Anda harus menambahkan
i386
arsitektur dan juga Anda harus menginstallibc6:i386
,libncurses5:i386
,libstdc++6:i386
tiga paket perpustakaan tersebut.sumber
libselinux1:i386
Dengan menginstal deb selama 32 bit saya menyadari bahwa saya kehilangan beberapa perpustakaan (selain ia32-libs dan libc6). Saya pertama kali memecahkan masalah ini dengan memberikan perintah ini:
Lalu saya mendapat kesalahan lain:
Jelas, perpustakaan ini dipasang dengan benar. Tanpa merinci saya harus menghubungkan perpustakaan dengan tangan. Saya menyadari bahwa itu juga bisa menjadi solusi yang lebih mudah melalui Synaptic menginstal paket-paket berikut:
Setelah itu masalah berikutnya adalah layar hitam saat bermain, yang saya selesaikan dengan mengganti executable di / Shank / bin dengan ini: http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-test.tar .bz2 .
Semoga bermanfaat bagi seseorang. Jika Anda memerlukan bantuan lebih banyak atau lebih banyak detail, jangan ragu untuk menghubungi saya.
sumber
Berikut adalah transkrip yang menunjukkan lebih banyak tentang sifat masalahnya, dan cara memperbaikinya pada Ubuntu 16.04. Perhatikan bahwa meskipun
file
laporan "ditautkan secara dinamis",ldd
laporan "tidak dapat dieksekusi secara dinamis".Setelah Anda menginstal libc6: i386, hal-hal mulai membaik ...
Untuk menyelesaikan pekerjaan, Anda mungkin perlu mengidentifikasi dan menginstal perpustakaan tambahan satu per satu ...
Saya tidak tahu apakah ada cara sistematis untuk mengidentifikasi perpustakaan yang benar untuk diinstal. Ada sedikit dugaan yang memetakan pesan kesalahan ke nama paket (penyelesaian tab membantu).
sumber
ldd
(salah) melaporkan "bukan eksekusi dinamis".Untuk memperluas jawaban @Gilles, setidaknya ada tiga skenario yang menghasilkan kesalahan ini:
file
Perintah berfungsi), membuat pesan kesalahan yang membingungkan. Ini mungkin berarti ada masalah dengan loader.Kategori masalah loader:
Loader yang dapat dieksekusi tidak ada. Anda dapat memeriksa ini menggunakan perintah file dan melihat apakah loader memang ada. Misalnya
Perhatikan
interpreter /lib64/ld-lsb-x86-64.so.3
; jika file ini tidak ada, Anda harus menginstalnya. Untuk pemuat khusus ini pada 16,04, jawabannya ternyatasudo apt-get install lsb
.Masalah dengan pemuat skrip (lihat jawaban ini ).
ldd <file-name>
untuk memeriksa pustaka "tidak ditemukan". Lihat jawaban ini untuk info lebih lanjut.Loader yang tidak ada dapat disebabkan oleh ketidakcocokan 32/64 bit atau alasan lainnya. Mungkin ada jenis kesalahan pemuat lainnya yang tidak saya ketahui.
sumber
file lmutil
tidak menunjukkan penerjemah, tetapildd
melakukannya, dan menginstallsb
memecahkan masalah.