„EOF in Backquote-Substitution“ beim Versuch, eine Binärdatei auszuführen

„EOF in Backquote-Substitution“ beim Versuch, eine Binärdatei auszuführen

Beim Versuch, eine Binärdatei mit dem Befehl auszuführen, wird folgende Fehlermeldung angezeigt:tmp/123.bin

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

Ich habe keine Ahnung, was die Fehlerursache sein könnte, da es sich um eine Skript-bezogene Fehlermeldung handelt und ich versuche, eine Binärdatei auszuführen.

Die Datei wird mit dem folgenden (nodejs) Code erstellt.

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`);

Ich habe kein Problem damit, die Datei auf meiner Entwicklungsmaschine (WSL, Ubuntu 20.04 LTS) auszuführen. Wenn ich jedoch versuche, dasselbe mit Google Cloud Run zu tun, schlägt der Befehl fehl.

Für jede Hilfe bin ich sehr dankbar! :)

Bearbeiten: Hier sind einige Informationen, die ich herausfinden konnte.

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

Antwort1

Es stellt sich heraus, dass Sie auf Cloud Run nur 64-Bit-Programme ausführen können

Ausführbare Dateien im Container-Image müssen für Linux 64-Bit kompiliert werden

Sie können jedochqemu!

Nachdem Sie apt install -y qemu-userIhrem Dockerfile hinzugefügt haben, können Sie eine 32-Bit-Binärdatei mit dem Befehl ausführenqemu-i386 ./file

verwandte Informationen