Linux는 (텍스트가 아닌) 바이너리를 실행하는 데 사용할 도구를 어떻게 결정합니까?

Linux는 (텍스트가 아닌) 바이너리를 실행하는 데 사용할 도구를 어떻게 결정합니까?

Linux가 shebang 라인을 사용하여 스크립팅 언어에 사용할 인터프리터를 결정한다는 것을 알고 있지만 바이너리에서는 어떻게 작동합니까?

내 말은 Linux 바이너리를 실행할 수 있고 둘 다 설치할 수 있다는 뜻입니다.와인그리고단핵구증, Windows 기본 및 .NET 바이너리. 모든 항목에 대해 ./binary-name경로에 없으면 실행하세요.

Linux는 주어진 바이너리가 Linux 네이티브 바이너리, Windows 네이티브 바이너리(사용하여)로 실행되어야 하는지 어떻게 결정합니까?와인시설) 또는 Windows .NET 바이너리(사용단핵구증시설)?

답변1

한 문장으로:binfmt_misc. 이는 Linux에 특화된 비이식성 도구입니다.

내장된 로직을 통해 커널이 인식하는 여러 형식이 있습니다. 즉, ELF 형식(일반 바이너리의 경우)과 Shebang 규칙(스크립트의 경우)이 있습니다. (감사해요즈월답변의 다음 부분). 또한 Linux는 일부 난해하거나 오래되었거나 호환되지 않는 내장 형식을 인식합니다. 당신은 아마 그들을 만나지 못할 것입니다. a.out"em86", "플랫" 및 "elf_fdpic" 입니다 .

다른 모든 항목은 binfmt_misc 시스템에 등록되어야 합니다. 이 시스템을 사용하면 해당 인터프리터와 함께 커널에 간단한 매직 넘버 기반 패턴 검사를 등록할 수 있습니다.

관련 정보