Tecnología · GUÍA PRÁCTICA
¿Linux muestra “cannot execute binary file: Exec format error”? Demuestra el límite del archivo, la plataforma y el intérprete
Conserva los bytes exactos, clasifica el archivo, compara su máquina y formato con el host e inspecciona el intérprete declarado antes de recompilar o cambiar permisos.

“Exec format error” es un fallo de clasificación, no una prueba de que el bit de ejecución sea incorrecto. Antes de cambiar nada, conserva el comando exacto, la ruta, el directorio de trabajo, el shell, la arquitectura del host y el SHA-256 del archivo. Después clasifica en modo de solo lectura si los bytes son un script, un ejecutable ELF, un objeto, un archivo comprimido o una página de error guardada con nombre de binario.
Este flujo se limita a la ejecución directa desde el shell del host. Si el fallo procede de una unidad systemd o de una compilación o punto de entrada de Docker, conserva la misma evidencia y usa la guía específica: esos contextos cambian la ruta, la plataforma y el intérprete que realmente se ejecutan.
Congela un fallo e identifica los bytes exactos
Registra el comando literal, estado de salida, ruta absoluta, directorio de trabajo, shell, uname -s, uname -m y sha256sum del objetivo. Resuelve los enlaces sin reemplazar el archivo y comprueba si un envoltorio eligió otra ruta.
Ejecuta file sobre esa ruta exacta y guarda toda la salida. Si indica HTML, JSON, texto, archivo comprimido, objeto reubicable o datos, investiga la descarga o compilación antes de tocar permisos.
Separa un script de un binario ELF
En un script inspecciona solo los bytes de la primera línea. Confirma #!, la ruta absoluta del intérprete y si un retorno de carro o BOM alteró la ruta que ve el kernel. Verifica el intérprete aparte y en modo de solo lectura.
En un ELF ejecuta readelf -h y compara Class, Data, Type y Machine con el host previsto. Una discrepancia pertenece a la compilación o selección del artefacto, no a chmod.
Demuestra el límite del intérprete ELF
Si la cabecera coincide, usa readelf -l para ver el intérprete solicitado, registra la ruta exacta y verifica que el cargador esperado exista en el host. Una etiqueta CPU compatible no demuestra que estén presentes el ABI y el cargador.
No copies un archivo cualquiera de nombre parecido para “arreglar” un cargador ausente. Elige un artefacto para el ABI admitido o instala el entorno documentado mediante el proceso de paquetes controlado.
Repara el límite productor, no el síntoma
Para OS o máquina incorrectos, elige o recompila el objetivo correcto. Para tipo ELF incorrecto, publica el ejecutable y no un objeto o biblioteca. Para texto, corrige descarga, autenticación, redirección o empaquetado. Para shebang mal formado, corrige y revisa solo esa frontera.
Conserva en el incidente el hash original y el de reemplazo. Si una compilación, despliegue o actualizador genera la ruta, corrige ese productor para que los bytes defectuosos no reaparezcan.
Repite la misma invocación y define el cierre
Ejecuta el mismo comando desde el mismo directorio y host previsto. Registra el hash nuevo, clasificación, evidencia ELF o shebang, estado de salida y una comprobación pequeña del comportamiento esperado.
Cierra solo cuando la ejecución funcione y toda discrepancia anterior esté explicada. Si systemd o Docker aportaron el contexto, entrega la evidencia al flujo específico en lugar de mezclar fronteras de ejecución distintas.
