バイナリを実行しようとすると「バックティック置換のEOF」が発生する

バイナリを実行しようとすると「バックティック置換のEOF」が発生する

次のコマンドを使用してバイナリを実行しようとすると、次のエラーが発生します。tmp/123.bin

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

これはスクリプト固有のエラーメッセージであり、バイナリを実行しようとしているため、エラーの原因が何であるかわかりません。

ファイルは次のコードを使用して生成されます。

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ビット用にコンパイルする必要があります。

しかし、あなたは使用することができますゲーム

Dockerfileに追加されたら、apt install -y qemu-user次のように32ビットバイナリを実行できます。qemu-i386 ./file

関連情報