Recibo el siguiente error al intentar ejecutar un archivo binario con el comando:tmp/123.bin
tmp/123.bin: 1: tmp/123.bin: Syntax error: EOF in backquote substitution
No tengo idea de qué podría estar causando el error, ya que se trata de un mensaje de error relacionado con el script y estoy intentando ejecutar un archivo binario.
El archivo se crea con el siguiente código (nodejs).
await runCommand(`nasm -f elf32 ./tmp/${id}.asm -o ./tmp/${id}.o`);
await runCommand(`ld -m elf_i386 ./tmp/${id}.o -o ./tmp/${id}.bin`);
await runCommand(`chmod +x tmp/${id}.bin`);
No tengo problemas para ejecutar el archivo en mi máquina de desarrollo (wsl, Ubuntu 20.04 LTS). Sin embargo, cuando intento hacer lo mismo en Google Cloud Run, el comando falla.
¡Cualquier ayuda es muy apreciada! :)
Editar: aquí hay información que logré descubrir.
ls -l ./tmp/123.bin
→-rwxrwxr-x 1 root root 956 Oct 30 18:24 ./tmp/123.bin
file ./tmp/123.bin
→./tmp/123.bin: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
uname -a
→Linux localhost 4.4.0 #1 SMP Sun Jan 10 15:06:54 PST 2016 x86_64 GNU/Linux
Respuesta1
Resulta que solo puedes ejecutar ejecutables de 64 bits en Cloud Run
Los ejecutables en la imagen del contenedor deben compilarse para Linux de 64 bits.
Sin embargo puedes usarqemu!
Después de agregarlo apt install -y qemu-user
a su Dockerfile, puede ejecutar un binario de 32 bits con el comandoqemu-i386 ./file