«EOF в замене обратной кавычки» при попытке запустить двоичный файл

«EOF в замене обратной кавычки» при попытке запустить двоичный файл

При попытке запустить двоичный файл с помощью команды возникает следующая ошибка:tmp/123.bin

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

Я понятия не имею, что может быть причиной ошибки, поскольку это сообщение об ошибке, связанное со скриптом, а я пытаюсь запустить двоичный файл.

Файл создается с помощью следующего кода (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`);

У меня не возникло проблем с выполнением файла на моей машине разработки (wsl, Ubuntu 20.04 LTS). Однако при попытке сделать то же самое в Google Cloud Run команда не выполняется.

Любая помощь будет высоко оценена! :)

Редактировать: вот некоторая информация, которую мне удалось узнать.

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

решение1

Оказывается, в Cloud Run можно запускать только 64-битные исполняемые файлы.

Исполняемые файлы в образе контейнера должны быть скомпилированы для Linux 64-bit.

Однако вы можете использоватьqemu!

После добавления apt install -y qemu-userв Dockerfile вы можете запустить 32-битный двоичный файл с помощью командыqemu-i386 ./file

Связанный контент