2012-05-08 7 views
12

MinGW-w64は少なくともDecember 2010以降、Cygwinで利用可能です。 しかし、私はこれを使ってほとんど何かをコンパイルするのに苦労しています。私がコンパイルしようとする場合、私は、例えばalternativesCygwinでMinGW-w64を使用するには?

p=x86_64-w64-mingw32 
alternatives \ 
    --install /usr/bin/gcc.exe gcc /usr/bin/$p-gcc.exe 0 \ 
    --slave /usr/bin/ar.exe ar /usr/bin/$p-ar.exe 

でシンボリックリンクを設定しているwget

./configure --without-ssl 
make 

エラー(簡潔にするために編集)

connect.o:connect.c:(.text+0x3f): undefined reference to `__imp_htons' 
connect.o:connect.c:(.text+0xbe7): undefined reference to `__imp_ntohs' 
connect.o:connect.c:(.text+0xd96): undefined reference to `run_with_timeout' 

私が使用している場合

  • MinGW CygwinのGCC(gcc4-core

とMinGWのGCC

  • CygwinのシェルとシェルそしてWgetはコンパイルされます。 AK2答えをオフに基づいて

    が、これは

    ./configure --host=x86_64-w64-mingw32 --disable-ipv6 --without-ssl 
    make 
    
  • 答えて

    19

    ak2は、hereと部分的に間違っています。

    あなたが知っているとおり、正しいオプションは--host=x86_64-w64-mingw32です。 --targetは、クロスコンパイラ自体の構築に使用されます。オプションは次のとおりです。

    • --build:あなたは
    • --host上で構築している何を:あなたは
    • --targetのために構築されているもの:何を構築していると、そのクロスコンパイラを構築するものを、クロスコンパイラの場合ために。
    6

    を動作するようですCygwinのMinGWの-W64コンパイラは、それがCygwinの上でホストされているため、クロスコンパイラですが、MinGWの-W64をターゲットに。あなただけそうのように、--targetオプションを使用して、それについてconfigureを伝える必要があります:

    --target=x86_64-w64-mingw32 
    

    その方法を、makeは、適切なツールを起動します。また、構築しようとしているパッケージが依存するライブラリのMinGW-w64バージョンをインストールまたは構築する必要があります。

    MinGW-w64のツールを/usr/binの点に置き換える代わりのシステムを曲げるのは良い考えではありません。CygwinのヘッダーとライブラリでMinGWツールを使用すると、そのようなエラーが発生しますあなたは上に引用した。

    +0

    私はCygwinに 'mingw64-x86_64-gcc-g ++'パッケージをインストールしました。しかし、 'which g ++'は 'g ++'を表示しません。インストールされた 'mingw64'コンパイラはどこにありますか?この 'mingw64-x86_64-gcc-g ++'では './configure --target = ???' – Admia

    関連する問題