Binary

嘗試執行二進製文件時出現“反引號替換中的 EOF”

  • October 30, 2021

嘗試使用命令執行二進製文件時出現以下錯誤: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

原來您只能在 Cloud Run 上執行 64 位執行檔

容器映像中的執行檔必須針對 Linux 64 位進行編譯

但是你可以使用qemu

添加到 Dockerfile 後,您可以使用命令🎉apt install -y qemu-user執行 32 位二進製文件qemu-i386 ./file

引用自:https://unix.stackexchange.com/questions/675439