Linux と Windows の実行可能ファイルは、異なる形式を使用します。 Linux はほとんどのアーキテクチャで ELF 形式を使用しますが、Windows は PE 形式を使用します。 Linux が共有ライブラリを管理する方法には ELF が適し、Windows が共有ライブラリを管理する方法には PE が適していますが、Linux が PE 実行可能ファイルまたは Windows ELF 実行可能ファイルを実行できない根本的な理由はありません。実際、Linux ではできます Wine を介して PE 実行可能ファイルを実行します。
問題は、Windows と Linux の API がまったく異なることです。つまり、カーネル インターフェイスとライブラリ セットが異なります。そのため、実際に Windows アプリケーションを実行するには、アプリケーションが行うすべての API 呼び出しを Linux でエミュレートする必要があります。それは大変な作業です。 Wine はある程度それを行いますが、特に Windows のメーカーが協力しないため、非常に困難です。たとえば、母国語が中国語の場合に英語を学習する場合と比較できます。実行形式はアルファベットであり (習得するのはそれほど難しくありません)、API は語彙です (文学を読み始めることができるレベルに到達するには何年もかかります)。 ).
Windows バイナリは Linux バイナリとは異なる ABI を持ち、異なる API を使用します。
*nix は拡張子の代わりに許可ビットを使用して実行可能ファイルを識別するため、Linux バイナリには拡張子は必要ありません。