Saya mencoba mengkompilasi firmware untuk Linksys saya, WRVS4400N.
lsmenunjukkan bahwa ada tetapi ketika mencoba menjalankannya bash mengatakan itu tidak ada. Saya juga bisa cat, dan itu adalah executable, bukan skrip shell.
Saya mencoba mengkompilasi firmware untuk Linksys saya, WRVS4400N.
lsmenunjukkan bahwa ada tetapi ketika mencoba menjalankannya bash mengatakan itu tidak ada. Saya juga bisa cat, dan itu adalah executable, bukan skrip shell.
Jawaban:
Anda menyebutkan bahwa output dari file mkdepadalah 32-bit elf. Anda menjalankan VM 64-bit.
Contoh:
$ uname -m
x86_64
$ ls -l ./example
-rwxr-xr-x 1 root root 92312 2011-08-18 16:52 ./example
$ file ./example
example: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped
$ ./example
-bash: ./example: No such file or directory
Buat saja 32-bit VM baru dan kompilasi di sana.
Apakah ini diatur agar dapat dieksekusi? Jika tidak, maka chmod +x filename. Apakah itu di PATH Anda? Jika tidak, maka sebut saja sebagai ./filenamebukan hanya filename.
Ketika Anda mencoba untuk mengeksekusi file dan bash mengatakan itu tidak ada, kadang-kadang berarti bash percaya file tersebut adalah skrip dan bahwa penerjemah yang ditentukan pada baris pertama (#!) Tidak ada.
Jika file bernama mkdepsaya akan memposting output
./mkdep
file mkdep
hd mkdep | head
strace ./mkdep 2>mkdep.strace.txt
Perintah strace memberikan info tentang panggilan sistem yang dibuat, misalnya strace ls 2>ls.tmenempatkan yang berikut ke ls.t
mengeksekusi ("/ bin / ls", ["ls"], [/ * 22 vars * /]) = 0
brk (0) = 0x8061000
akses ("/ etc / ld.so.nohwcap", F_OK) = -1 ENOENT (Tidak ada file atau direktori seperti itu)
mmap2 (NULL, 8192, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0) = 0xb7f82000
akses ("/ etc / ld.so.preload", R_OK) = -1 ENOENT (Tidak ada file atau direktori seperti itu)
open ("/ etc / ld.so.cache", O_RDONLY) = 3
fstat64 (3, {st_mode = S_IFREG | 0644, st_size = 32311, ...}) = 0
mmap2 (NULL, 32311, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f7a000
tutup (3) = 0
akses ("/ etc / ld.so.nohwcap", F_OK) = -1 ENOENT (Tidak ada file atau direktori seperti itu)
open ("/ lib / librt.so.1", O_RDONLY) = 3
baca (3, "\ 177ELF \ 1 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0 \ 3 \ 0 \ 1 \ 0 \ 0 \ 0 \ 0 \ 240 \ 30 \ 0 \ 0004 \ 0 \ 0 \ 0 "..., 512) = 512
fstat64 (3, {st_mode = S_IFREG | 0644, st_size = 30624, ...}) = 0
strace ./mkdep 2>mkdep.strace.txtini akan memberi Anda gambaran tentang apa yang sedang terjadi. Anda mungkin perlu menginstal strace dari repositori.
Apakah Anda mengubah IFS di skrip Anda? Saya juga mengalami masalah yang sama di salah satu skrip saya dan berpikir yang sama (file 32 bit sedang dibaca oleh skrip shell pada mesin 64 bit). Tapi itu bukan masalah dalam kasus saya. Sebaliknya, saya mengubah IFS ke koma ',' dan kembali ke baris baru yang entah bagaimana membingungkan parser dan menyebabkan kesalahan ini.
Saya baru saja menghapus perubahan apa pun di IFS dan berfungsi dengan baik sekarang !!!