Estoy tratando de compilar el firmware para mi Linksys WRVS4400N.
ls
muestra que existe pero cuando intenta ejecutarlo bash dice que no existe. También puedo cat
hacerlo, y es un ejecutable, no un script de shell.
bash
arch-linux
Avery3R
fuente
fuente
Respuestas:
Usted mencionó que la salida de
file mkdep
es32-bit elf
. Estás ejecutando una máquina virtual de 64 bits.Ejemplo:
Simplemente haga una nueva máquina virtual de 32 bits y compílela allí.
fuente
¿Está configurado para ser ejecutable? Si no, entonces
chmod +x filename
. ¿Está en tu RUTA? Si no, entonces llámalo como./filename
algo más que simplementefilename
.fuente
Cuando intenta ejecutar un archivo y bash dice que no existe, a veces significa que bash cree que el archivo es un script y que el intérprete especificado en la primera línea (#!) No existe.
Si se nombra los archivos
mkdep
, publicaría la salida deEl comando strace proporciona información sobre las llamadas realizadas al sistema, por ejemplo,
strace ls 2>ls.t
pone lo siguiente en ls.tfuente
strace ./mkdep 2>mkdep.strace.txt
esto debería darle una idea de lo que está sucediendo. Es posible que deba instalar strace desde los repositorios.¿Estás cambiando IFS en tu script? También encontré el mismo problema en uno de mis scripts y pensé lo mismo (el archivo de 32 bits se lee mediante un script de shell en una máquina de 64 bits). Pero ese no era el problema en mi caso. En cambio, estaba cambiando IFS a coma 'y' a una nueva línea que de alguna manera confundió al analizador y causó este error.
Acabo de eliminar cualquier cambio en IFS y ahora funciona bien.
fuente