Sto cercando di compilare il firmware per il mio linksys WRVS4400N.
lsmostra che esiste ma quando tenta di eseguirlo bash dice che non esiste. Posso anche catfarlo, ed è un eseguibile, non uno script di shell.
Sto cercando di compilare il firmware per il mio linksys WRVS4400N.
lsmostra che esiste ma quando tenta di eseguirlo bash dice che non esiste. Posso anche catfarlo, ed è un eseguibile, non uno script di shell.
Risposte:
Hai detto che l'output di file mkdepè 32-bit elf. Stai eseguendo una VM a 64 bit.
Esempio:
$ 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
Basta creare una nuova macchina virtuale a 32 bit e compilarla lì.
È impostato per essere eseguibile? Altrimenti, allora chmod +x filename. È nel tuo PERCORSO? In caso contrario, chiamalo come ./filenamenon solo filename.
Quando si tenta di eseguire un file e bash dice che non esiste a volte significa che bash ritiene che il file sia uno script e che l'interprete specificato nella prima riga (#!) Non esista.
Se il file è denominato mkdep, inserirò l'output di
./mkdep
file mkdep
hd mkdep | head
strace ./mkdep 2>mkdep.strace.txt
Il comando strace fornisce informazioni sulle chiamate di sistema effettuate, ad esempio strace ls 2>ls.tinserisce quanto segue in ls.t
execve ("/ bin / ls", ["ls"], [/ * 22 vars * /]) = 0
brk (0) = 0x8061000
access ("/ etc / ld.so.nohwcap", F_OK) = -1 ENOENT (nessun file o directory)
mmap2 (NULL, 8192, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0) = 0xb7f82000
access ("/ etc / ld.so.preload", R_OK) = -1 ENOENT (nessun file o directory)
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
chiudi (3) = 0
access ("/ etc / ld.so.nohwcap", F_OK) = -1 ENOENT (nessun file o directory)
open ("/ lib / librt.so.1", O_RDONLY) = 3
leggi (3, "\ 177ELF \ 1 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0 \ 3 \ 0 \ 1 \ 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.txtquesto dovrebbe darti un'idea di quello che sta succedendo. Potrebbe essere necessario installare strace dai repository.
Stai cambiando IFS nella tua sceneggiatura? Anch'io ho riscontrato lo stesso problema in uno dei miei script e ho pensato lo stesso (file a 32 bit letto dallo script della shell su una macchina a 64 bit). Ma quello non era il problema nel mio caso. Invece, stavo cambiando IFS in virgola ',' e tornando alla nuova riga che in qualche modo ha confuso il parser e ha causato questo errore.
Ho appena rimosso qualsiasi modifica a IFS e ora funziona perfettamente !!!