回答:
LinuxとWindowsの実行可能ファイルは異なる形式を使用します。LinuxはほとんどのアーキテクチャでELF形式を使用しますが、WindowsはPE形式を使用します。ELFはLinuxが共有ライブラリを管理する方法により適しています。PEはWindowsが共有ライブラリを管理する方法により適していますが、LinuxがPE実行可能ファイルまたはWindows ELF実行可能ファイルを実行できなかった根本的な理由はありません。実際、Linux はWineを介してPE実行可能ファイルを実行できます。
難点は、WindowsとLinuxのAPIがまったく異なることです。カーネルインターフェイスとライブラリセットが異なります。したがって、Windowsアプリケーションを実際に実行するには、Linuxがアプリケーションが行うすべてのAPI呼び出しをエミュレートする必要があります。それは大変な仕事です。Wineはある程度それを行いますが、特にWindowsのメーカーが協力していないため、非常に困難です。たとえば、母国語が中国語の場合に英語を学習する場合と比較できます。実行形式はアルファベット(習得するのは難しくありません)、APIは語彙です(文献を読み始めることができるレベルになるには数年かかります) )。
Windowsバイナリには異なるABIがありますが異なり、Linuxバイナリとは異なるAPIを使用します。
* nixは拡張機能の代わりに許可ビットを使用して実行可能ファイルを識別するため、Linuxバイナリは拡張機能を必要としません。
これは私がプログラマーから素人の言葉で説明するウィンドウサイドを聞いた方法です。
Windowsにはプログラムにフックがあり、Exeがそれを呼び出すOSはLinuxにはありません。両方の環境の違いのため。最初にLinuxは許可を探しますが、Windowsはまず拡張機能を調べ、プロパティを調べ、次にExeファイル内を調べるなどして、リンク可能な形式を探します。
NetbackupのようなアプリケーションはLinuxで起動し、ワインIMHOを使用せずにWindows環境で実行するように変更されています。多くの場合、これらは最も安定して動作するWindowsアプリです。
Windowsアプリの場合。通常、手に負えなくなるのは、アプリケーションによって保持されているフックの一部が完全に解放されておらず、Windowsがそれらをメモリリークと考えているためです。Windowsが未解放のメモリスペースを別のアプリケーションに渡すと、クラッシュして書き込みます。