尝试运行二进制文件时出现“反引号替换中的 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

相关内容