Saya mencoba mengkompilasi firmware untuk Linksys saya, WRVS4400N.
ls
menunjukkan bahwa ada tetapi ketika mencoba menjalankannya bash mengatakan itu tidak ada. Saya juga bisa cat
, dan itu adalah executable, bukan skrip shell.
bash
arch-linux
Avery3R
sumber
sumber
Jawaban:
Anda menyebutkan bahwa output dari
file mkdep
adalah32-bit elf
. Anda menjalankan VM 64-bit.Contoh:
Buat saja 32-bit VM baru dan kompilasi di sana.
sumber
Apakah ini diatur agar dapat dieksekusi? Jika tidak, maka
chmod +x filename
. Apakah itu di PATH Anda? Jika tidak, maka sebut saja sebagai./filename
bukan hanyafilename
.sumber
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
mkdep
saya akan memposting outputPerintah strace memberikan info tentang panggilan sistem yang dibuat, misalnya
strace ls 2>ls.t
menempatkan yang berikut ke ls.tsumber
strace ./mkdep 2>mkdep.strace.txt
ini 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 !!!
sumber