web-dev-qa-db-ja.com

LinuxからWindowsにC ++アプリケーションをクロスコンパイルするためのマニュアル?

LinuxからWindowsにC++アプリケーションをクロスコンパイルするためのマニュアルはありますか?

それだけ。そのためのガイドとなる情報(リンク、リファレンス、例など)が欲しいのですが。

それが可能かどうかさえ知りません。

私の目的は、Linuxでプログラムをコンパイルし、Windowsで実行できる.exeファイルを取得することです。

40
Pablo Herrero

基本はそれほど難しくありません:

Sudo apt-get install mingw32    
cat > main.c <<EOF
int main()
{
  printf("Hello, World!");
}
EOF
i586-mingw32msvc-cc main.c -o hello.exe

apt-getyum、またはLinuxディストリビューションが使用するものに置き換えます。これにより、Windows用のhello.exeが生成されます。

それを理解したら、 autotools を使用してCC=i586-mingw32msvc-ccを設定できます。

CC=i586-mingw32msvc-cc ./configure && make

または CMakeとツールチェーンファイル を使用してビルドを管理します。さらに難しいのは、ネイティブクロスライブラリを追加することです。通常、これらは/usr/cross/i586-mingw32msvc/{include,lib}に格納され、ビルドプロセスの構成ステップでこれらのパスを個別に追加する必要があります。

53
richq

それはあなたが何を意味するかによります(私は本当に言えませんでした)。

  1. Windowsで既存のLinuxアプリケーションを使用したい場合は、Windowsで Cygwin を使用してコンパイルしてみてください。ただし、これにより、Cygwinへのすべての依存関係から解放されたWindows実行可能ファイルが提供されるわけではありません(実行可能ファイルはcygwin.dll file)-機能するためには、まだ移植が必要な場合があります。 http://www.cygwin.com を参照してください。

  2. LinuxでWindowsアプリケーションの実際のコンパイルを実行し、Windowsで実行可能な.exeファイルを生成できるようにしたい場合は、Linuxボックスを使用して開発やコンパイルを行う必要があります。 MinGW Linux用。これは、Linux上のWindows用のクロスコンパイル用のツールです。 http://www.mingw.org/wiki/LinuxCrossMinGW を参照してください。

宜しくお願いします!

6
Anders Hansson

[〜#〜] gub [〜#〜] (依存関係のある複数のパッケージをクロスコンパイルして単一のインストールパッケージにアセンブルする)を試してみることをお勧めします現在11のアーキテクチャ。 VM from here からインストール用にビルド済みのisoをダウンロードし、ソース here をたどることができます。現在、クロスコンパイルGNU LilyPond/GNU Denemo/InkscapeおよびOpenOffice.org。

ターゲットアーキテクチャは次のとおりです。

  • darwin-ppc-Darwin 7(MacOS 10.3)/ PowerPC用のtar.bz2ファイル
  • darwin-x86-Darwin 8(MacOS 10.4)/ x86用のtar.bz2ファイル
  • mingw-Windows32用のmingw実行可能ファイル
  • linux-x86-Linux/x86のsharアーカイブ
  • linux-64-Linux/x86_64用のsharアーカイブ
  • linux-ppc-Linux/PowerPCのsharアーカイブ
  • freebsd-x86-FreeBSD 4/x86のsharアーカイブ
  • freebsd-64-FreeBSD 6/x86_64のsharアーカイブ
  • cygwin-Cygwin/Windows32用の.tar.bz2パッケージ
  • arm-Linux/ARM用のsharアーカイブ(ほとんど未テスト)
  • debian-Debianのsharアーカイブ(ほとんど未テスト)
4
1.01pm