web-dev-qa-db-ja.com

UbuntuでのCファイルのコンパイルとWindowsでの実行可能ファイルの使用

いくつかの奇妙な理由で、makeはWindowsでコンパイルするときに集計エラーを出し続けたので、Ubuntuで試してみましたが、問題なく動作しました。

次に、Ubuntuでコンパイルして取得した実行可能ファイルを使用して、Windowsで使用したいと思います。ただし、Windowsにダウンロードすると、fileとなるため、取得するファイルの種類が異なります。 Ubuntuでコンパイルされている場合、Windowsで実行できますか?

14
hkj447

Ubuntuの標準コンパイラツールチェーンは、Windows実行可能ファイルではなく、Linux実行可能ファイルを生成します。 Windows実行可能ファイルを生成するクロスコンパイラーをインストールすることは可能です。これは Stack Overflowの質問 であり、答えはインストール方法と実行方法に関するヒントを与えます。

47
john_e

これはクロスコンパイルと呼ばれます。以下を含む適切なコードとフォーマットを生成する「ツールチェーン」(コンパイラ、リンカーなど)が必要です。

  • ターゲットプロセッサのアーキテクチャ。あなたの場合はおそらく同じです(x86またはAMD64)が、たとえばARMプロセッサーのPCで実行可能ファイルをビルドするときに、別のプロセッサー用にクロスコンパイルすることがあります。

  • ターゲットABI(これらは使用される呼び出し規約です)。

  • 適切なフォーマット

  • システムライブラリを含む適切なライブラリ。

プロジェクトによっては、これは非常に簡単(フラグまたはどこかに設定する環境変数のみ)または非常に難しい場合があります。

いくつかのポインタ herehere または here があります。

12
jcaron

Linuxで動作するビルドスクリプトがWindowsでは通常動作しないようにします。

Makeサブシステムなしで.cファイルのコンパイルを試すことができます(直接Visual Studioまたは別のCコンパイラを使用してください)。

Cygwin を使用して、アプリケーションがPOSIX呼び出しに依存している場合、そのアプリケーションをコンパイルして実行できます。

アプリケーションのWindows固有のビルドスクリプトを見つけてみてください。通常、これは別のフォルダーまたは別のダウンロードにあります。

1
pestatije