バイナリ ファイルを実行しようとすると、「バッククォート置換で 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-userDockerfileに追加した後、次のコマンドで32ビットバイナリを実行できます。qemu-i386 ./file

関連情報