답변:
Linux 및 Windows 실행 파일은 다른 형식을 사용합니다. Linux는 대부분의 아키텍처 에서 ELF 형식을 사용하는 반면 Windows는 PE 형식을 사용 합니다. ELF는 Linux가 공유 라이브러리를 관리하는 방법에 더 적합하고 PE가 Windows가 공유 라이브러리를 관리하는 방법에 더 적합하지만 Linux가 PE 실행 파일 또는 Windows ELF 실행 파일을 실행할 수없는 근본적인 이유는 없습니다. 실제로 Linux 는 Wine을 통해 PE 실행 파일을 실행할 수 있습니다 .
어려운 점은 Windows와 Linux의 API 가 완전히 다르다는 것입니다 . 커널 인터페이스와 라이브러리 세트가 다릅니다. 따라서 실제로 Windows 응용 프로그램을 실행하려면 Linux에서 응용 프로그램이 수행하는 모든 API 호출을 에뮬레이션해야합니다. 많은 작업입니다. 와인은 어느 정도까지는 와인을 생산하지만 특히 Windows 제조업체가 협조하지 않기 때문에 매우 어렵습니다. 예를 들어, 모국어가 중국어 일 때 영어를 배우는 것과 비교할 수 있습니다. ).
Windows 바이너리는 ABI 가 다르며 Linux 바이너리 와 다른 API를 사용 합니다.
* nix는 확장 대신 실행 파일을 식별하기 위해 권한 비트 를 사용하므로 Linux 바이너리에는 확장이 필요하지 않습니다 .
이것이 프로그래머 측의 평신도 용어로 설명 된 창 측면을 들었습니다.
Windows에는 프로그램에 후크가 있으며 Exe가 호출하는 OS는 Linux에 없습니다. 두 환경의 차이로 인해. 처음에는 Linux가 권한을 찾고 Windows는 확장을 검사하고 속성을 확인한 다음 Exe 파일 내부를 살펴보면서 먼저 링크 가능한 형식을 찾습니다.
Netbackup과 같은 응용 프로그램이 Linux에서 시작되어 와인 IMHO를 사용하지 않고 Windows 환경에서 실행되도록 수정되었습니다. 종종 가장 안정적인 Windows 응용 프로그램 중 가장 안정적인 응용 프로그램입니다.
Windows 앱을 사용하는 경우 일반적으로 응용 프로그램이 보유한 후크 중 일부가 완전히 해제되지 않았고 Windows가 (메모리 누수) 것으로 생각하기 때문입니다. Windows에서 해제되지 않은 메모리 공간을 다른 응용 프로그램으로 넘기면 충돌이 발생합니다.