2012-05-08 19 views
12

MinGW-w64 è disponibile con Cygwin almeno dal December 2010. Tuttavia ho difficoltà a usare questo per compilare quasi tutto. Ho impostato i collegamenti simbolici con alternativesCome usare MinGW-w64 con Cygwin?

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 

Per esempio, se provo a compilare wget

./configure --without-ssl 
make 

errori (a cura per brevità)

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' 

Se uso

  • MinGW shell con MinGW gcc
  • shell Cygwin Cygwin con gcc (gcc4-core)

Poi Wget compilazione.

base al largo risposta AK2, questo sembra funzionare

./configure --host=x86_64-w64-mingw32 --disable-ipv6 --without-ssl 
make 

risposta

19

ak2 è parzialmente errato come indicato here.

L'opzione corretta è --host=x86_64-w64-mingw32, come hai scoperto. --target viene utilizzato per la creazione di un cross-compilatore stesso. Le opzioni sono:

  • --build: Cosa si sta costruendo
  • --host: Che cosa si sta costruendo per
  • --target: se ciò che si sta costruendo è un cross-compilatore, cosa che cross-compilatore costruirà per.
6

compilatore MinGW-W64 di Cygwin è un cross-compilatore, perché è ospitato su Cygwin, ma mira MinGW-W64. Hai solo bisogno di dire configure su di esso utilizzando l'opzione --target, in questo modo:

--target=x86_64-w64-mingw32 

In questo modo, make saranno invocando gli strumenti appropriati. Dovrai anche installare o compilare le versioni MinGW-w64 di tutte le librerie da cui dipende il pacchetto che stai cercando di costruire.

Piegare il sistema alternativo per avere gli strumenti nel punto /usr/bin su quelli MinGW-w64 non è una buona idea, perché in questo modo userete gli strumenti MinGW con le intestazioni e le librerie Cygwin, il che porta a errori come quelli hai citato sopra.

+0

Ho installato il pacchetto 'mingw64-x86_64-gcc-g ++' in Cygwin. Tuttavia, 'which g ++' non mostra' g ++ '. Dov'è il compilatore 'mingw64' installato? Per questo 'mingw64-x86_64-gcc-g ++' cosa dovrei impostare in './configure --target = ???' – Admia