Biasanya pesan kesalahan itu berarti Linux tidak mengenali file tersebut sebagai skrip shell atau sebagai file yang dapat dieksekusi.
Biasanya penyebabnya adalah menjalankan executable pada arsitektur yang salah - jika Anda mencoba menjalankan x86 executable pada ARM CPU, pesan ini akan muncul.
Apakah /usr/bin/id
ditimpa, mungkin?
Coba jalankan menggunakan ./executablefilename alih-alih menggunakan sh executablefilename. Ini bukan skrip shell.
Masalahnya adalah menjalankan biner untuk arsitektur prosesor yang berbeda. Anda dapat menggunakan objdump (dari binutils) untuk memeriksa arsitektur binari. Anda dapat menggunakan uname untuk memeriksa arsitektur mesin.
misalnya Saya mengalami kesalahan ini "tidak dapat menjalankan file biner" saat menginstal FF.Communicator - plugin firefox untuk chrome (agar saya dapat menjalankan halaman yang menggunakan applet java).
- objdump menunjukkan binernya adalah 64-bit elf64-x86-64
-
hapus nama menunjukkan mesin saya 32-bit i686
$ ./FF.Communicatorbash:./FF.Communicator:tidak dapat menjalankan file biner$ uname -mpioi686 i686 i386 GNU/Linux$ objdump -a ./FF.Communicator./FF.Communicator:format file elf64-x86-64./ FF.Komunikator
-
objdump pada biner yang berfungsi di mesin saya menunjukkan bahwa ini adalah elf32-i386 32-bit
$ objdump -a /bin/ls/bin/ls:format file elf32-i386
Dengan menggunakan alat ini, Anda dapat memeriksa arsitektur mesin dan binari - bukan hanya arsitektur intel tetapi prosesor apa pun.
Untuk pengguna Mac OSX, Anda dapat mengetahui info arsitektur file tertentu menggunakan perintah "file":
$ file filename_here