Watch at EaseHistorias. Respuestas. Perspectiva.

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.

Diagrama original que sigue el archivo exacto por comprobaciones de formato, host e intérprete.
Ilustración original: clasifica los bytes exactos antes de elegir una reparación. Watch at Ease

“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.

Diagrama original de decisión que separa script, plataforma, tipo ELF y derivación a contenedor.
Ilustración original: repara el primer límite fallido y repite la misma invocación. Watch at Ease