바이너리 파일을 실행하려고 할 때 "역따옴표 대체의 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

관련 정보