嘗試執行二進位檔案時出現“反引號替換中的 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 位元進行編譯

不過你可以使用蓋姆

新增apt install -y qemu-user至 Dockerfile 後,您可以使用以下命令執行 32 位元二進位檔案qemu-i386 ./file

相關內容