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 -a
→Linux 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-user
ao seu Dockerfile você pode executar um binário de 32 bits com o comandoqemu-i386 ./file