일부 어셈블리부터 시작하려고 하는데 처음부터 이 오류가 발생합니다. 자세한 내용은 다음과 같습니다. (동영상 이후) 파일을 직접 작성했으므로 중요하지 않습니다.
global _start
_start:
mov eax, 1
mov ebx, 42
int 0x80
매우 기본적입니다. 조립해서 연결합니다(
nasm -f elf32 ex1.asm -o ex1.o
이어서
ld -m elf_i386 ex1.o -o ex1
각 단계의 종료 상태를 확인하려면 echo $?를 사용하세요. 잘 조립되고 연결됩니다. 이 문서는 다음을 제공합니다.
ex1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
내 프로세서는 64비트 AMD Ryzen 3 2200G이고 Win10 호스트와 Ubuntu도 64비트입니다(내가 아는 한 64비트 환경에서 32비트 바이너리를 실행하는 것은 문제가 되지 않습니다. 그렇죠?). 나는 32에서 64를 실행하려는 시도에 대해 논의하거나 손상된 가져오기 또는 아키텍처 비호환성(예: ARM용 조립) 또는 더 복잡한 문제에 대해 이야기하는 많은 게시물을 읽었습니다. 이는 매우 간단하며 모든 의도와 목적을 위해 간단하게 작동해야 합니다. 하지만 내가 시도하면
-bash: ./ex1: cannot execute binary file: Exec format error
Windows 10 Store, 64비트를 통해 설치된 Ubuntu입니다.
어떤 제안이 있으십니까?
답변1
의견에서 이미 지적했듯이 WSL(Linux용 Windows 하위 시스템)에서 실행되는 Ubuntu의 위 nasm 어셈블리 문제에 대한 대답은 WSL2로 업그레이드하는 것입니다. 이 문제가 발생하는 경우 다음을 참고하세요.
- Windows 10 버전이 2004 이전 버전인 경우 먼저 업데이트해야 합니다.
- Windows 및 WSL 업데이트는 관리자로 완료해야 합니다.
게임을 플레이하는 동안 너무 많은 링크를 사용하는데, 모두 기억할 수는 없습니다. 그러나 최근에 다음과 같은 문제가 발생했습니다.
https://www.youtube.com/watch?v=loC7VfgRT-I
사람들은 처음부터 시작하는 것이 유용하다고 생각할 수 있습니다.