64ビットWindows用の既存のPOSIXコードをコンパイルするには?
質問
私はCygwinのかMinGWのを使用してして、[OKだけど、私は64ビットコードではなく、32ビットで終わる必要があります。私は64ビットの管理のC#からDLLを呼び出すことになるためです。私が見つけ、64ビットのバイナリを作成するために、これらのツールを設定するための優れた参考文献に見えることはできません。私のCygwinをインストールして来たようGCCはバージョン4ではなく、バージョン3であった場合ます。
また、それはいいだろうの代替は、プロセス間通信のいくつかの形態であろう。私はそれを研究、しかし、私は上記にレイアウトすることは、私が本当に欲しいものであるだろう。
解決
(単に解放)GCC-4.4.0に基づいて 64ビットMinGWのに、 、おそらくあなたの最善の策です。 (sourceforge.net上のMinGW-w64プロジェクトは、 mingw-w64.orgを使用することをお勧めしますmingw-w64.orgするために動いているので、 の)
詳細な手順:
1.ダウンロード<のhref = "http://sourceforge.net/project/downloading.php?group_id=202880&filename=mingw-w64-bin_i686-cygwin-1.5.25-15_20090514.tar.bz2&a=93736319" のrel =」 nofollowをnoreferrer ">アーカイブの
2. cygwinの下のどこかでそれを抽出します。私の場合には、最上位のCygwinディレクトリはC:\cygwin
である、私はcygwinの下mingw
として表示されている(C:\cygwin\mingw
ディレクトリにパッケージを抽出し、/mingw
に以下の内容になってしまった。
$ ls -l /mingw
total 1
drwxr-xr-x+ 2 user None 0 May 10 08:32 bin
drwxr-xr-x+ 2 user None 0 May 10 05:45 include
drwxr-xr-x+ 2 user None 0 May 10 08:30 info
drwxr-xr-x+ 3 user None 0 May 10 08:30 lib
drwxr-xr-x+ 3 user None 0 May 10 05:45 libexec
drwxr-xr-x+ 4 user None 0 May 10 05:45 man
lrwxrwxrwx 1 user None 17 May 17 17:20 mingw -> x86_64-pc-mingw32
drwxr-xr-x+ 3 user None 0 May 10 04:16 share
drwxr-xr-x+ 5 user None 0 May 10 04:18 x86_64-pc-mingw32
3。現在、いくつかのC ++コードをコンパイル。私が使用します:
// t.cc
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> vs;
vs.push_back("abc");
}
そして、このようにそれをコンパイルします:
$ /mingw/bin/x86_64-pc-mingw32-g++ t.cc
4。最後に、結果が稼働してdumpbin /headers a.exe
により、Windowsの/×64、実行可能であることを確認します:
Microsoft (R) COFF/PE Dumper Version 7.00.9466
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file a.exe
PE signature found
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
8664 machine (AMD64)
10 number of sections
4A10AF9F time date stamp Sun May 17 17:45:19 2009
ABA00 file pointer to symbol table
EC4 number of symbols
F0 size of optional header
27 characteristics
Relocations stripped
Executable
Line numbers stripped
Application can handle large (>2GB) addresses
他のヒント
<のhref = "http://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options" のrel =」 noreferrer nofollowを言うの "> gccのドキュメントます:
mingwのは、本当にそのようにしている場合、通常は長いのWindows 64上で32ビットで、長い長い64ビットのポインタ・サイズであるため、これらの `-m」スイッチがでサポートされています AMDのx86-64上の上記に加え 64ビット環境のプロセッサ。
-m32 -m64 32ビットまたは64ビット環境用のコードを生成します。 32ビット 環境はint型、longおよびポインタを設定し、 32ビット、コードを生成します するi386システム上で実行されます。 64ビット 環境・セットは、32ビットにint型と 長いとポインタに64ビットと AMDのx86-64のためのコードを生成し、 建築ます。
それは狂気あなたを駆動するために起こっていることに注意してください、私は、と思います 種類ます。