“EOF na substituição de crases” ao tentar executar um arquivo binário

“EOF na substituição de crases” ao tentar executar um arquivo binário

Recebo o seguinte erro ao tentar executar um arquivo binário com o comando:tmp/123.bin

tmp/123.bin: 1: tmp/123.bin: Syntax error: EOF in backquote substitution

Não tenho ideia do que pode estar causando o erro, pois esta é uma mensagem de erro relacionada ao script e estou tentando executar um arquivo binário.

O arquivo é criado com o seguinte 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`);

Não tenho problemas para executar o arquivo em minha máquina de desenvolvimento (wsl, Ubuntu 20.04 LTS). No entanto, ao tentar fazer a mesma coisa no Google Cloud Run, o comando falha.

Qualquer ajuda é muito apreciada! :)

Editar: aqui estão algumas informações que consegui descobrir.

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 -aLinux localhost 4.4.0 #1 SMP Sun Jan 10 15:06:54 PST 2016 x86_64 GNU/Linux

Responder1

Acontece que você só pode executar executáveis ​​de 64 bits no Cloud Run

Os executáveis ​​na imagem do contêiner devem ser compilados para Linux de 64 bits

No entanto, você pode usarqemu!

Depois de adicionar apt install -y qemu-userao seu Dockerfile você pode executar um binário de 32 bits com o comandoqemu-i386 ./file

informação relacionada