なぜ SO を EXE に変換するのですか?
.so は、他のプログラムが呼び出すための関数をエクスポートする Linux ELF 共有ライブラリです。これにはスタンドアロンの実行ポイントがなく、Linux 上であっても単独で実行することはできません。.exe は、Windows API に対してリンクされ、独自の実行ポイントを持つ Windows PE 実行ファイルです。.so 内部のマシンコードは Windows に存在しない Linux カーネルインターフェースを呼び出すため、OS の境界を越えるツールは存在しません。
SO から EXE への変換方法
MinGW-w64 OPEN-SOURCE
MinGW-w64 クロスコンパイラを使用してライブラリのソースコードを Windows 用に再コンパイルし、.dll を生成します。その後、それを呼び出す個別の Windows 実行ファイルをコンパイルします。
MSVC FREE
Visual Studio または cl.exe を使用して Windows 上でソースコードをコンパイルし、.dll とそれにリンクする Windows の .exe を生成します。
これらの形式について
.soファイルは、LinuxおよびUnixにおける共有オブジェクトライブラリであり、Windowsの.dllに相当するものです。プログラムの実行時に自動的にロードされるため、直接開くことはありません。アプリが «cannot open shared object file»…
.SO の詳細を開く →EXEファイルはWindowsの実行プログラムです。Windowsでは、ダブルクリックして実行します。MacやLinuxでは、CrossOverやWineを使用してください。EXEはWindows以外ではネイティブに動作しません。EXEはWindowsにおけるマルウェア配布の最も一般的な形式であるため、信頼できるソースからのファイルのみを実行してください。
.EXE の詳細を開く →品質と注意点
.soは共有ライブラリであり、実行ファイルではありません。実行ポイントがないため、Linux 上でも単独で実行することはできません。- Wine は Linux で使用するために Windows API 呼び出しを変換するものであり、Windows 上で Linux ELF バイナリを実行するのには役立ちません。
- 再コンパイルせずに Linux プログラム全体を Windows で実行するには、代わりに WSL (Windows Subsystem for Linux) を使用してください。
よくある質問
Wine は Windows 上で `.so` を変換または実行できますか?
.exe ファイルが Linux で動作するように Windows API 呼び出しを変換するもので、逆方向の動作です。Windows 上で Linux ELF 共有オブジェクトを実行することはできません。Windows で Linux プログラムを実行したいのですが、何を使えばよいですか?
`.so` しかなく、ソースコードがない場合はどうすればよいですか?
objdump で構造を調査することは可能ですが、そこから動作する Windows バイナリを再構築するのは手動のエキスパートレベルの作業であり、自動化するコンバーターはありません。