2012-05-08 22 views
12

MinGW-w64 jest dostępny z Cygwin przynajmniej od December 2010. Jednak mam trudny czas przy użyciu tego, aby skompilować prawie wszystko. Mam ustawiony dowiązania symboliczne ze alternativesJak korzystać z MinGW-w64 z 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 

na przykład jeśli próbuję skompilować wget

./configure --without-ssl 
make 

Błędy (edytowane za zwięzłość)

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' 

Jeśli używam

  • MinGW powłoka z MinGW gcc
  • Cygwin powłoki z Cygwin gcc (gcc4-core)

Następnie Wget kompilacji.

Opierając się odpowiedź AK2, to wydaje się działać

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

Odpowiedz

19

ak2 jest częściowo niepoprawny, jak podano here.

Właściwą opcją jest --host=x86_64-w64-mingw32, jak się dowiedziałeś. --target służy do budowania samego cross-kompilatora. Dostępne są następujące opcje:

  • --build: Co budujesz na
  • --host: Co budujesz dla
  • --target: Jeśli budujesz jest cross-kompilator, co to cross-kompilator będzie budować dla.
6

Cygwin za MinGW-W64 kompilator jest cross-kompilator, ponieważ jest utrzymywana na Cygwin ale kierowanie MinGW-W64. Wystarczy powiedzieć configure temat korzystania z opcji --target, tak:

--target=x86_64-w64-mingw32 

ten sposób make będzie wywoływanie odpowiednich narzędzi. Będziesz także potrzebował zainstalować lub zbudować wersje MinGW-w64 wszystkich bibliotek, od których zależy pakiet, który próbujesz zbudować.

Gięcie systemu alternatyw, aby narzędzia w /usr/bin punkt na MinGW-w64 nie jest dobrym pomysłem, ponieważ w ten sposób będziesz używał narzędzi MinGW z nagłówkami i bibliotekami Cygwin, co prowadzi do błędów takich jak te cytowałeś powyżej.

+0

Mam zainstalowany pakiet 'mingw64-x86_64-gcc-g ++' w Cygwin. Jednak 'g ++' nie pokazuje żadnego 'g ++'. Gdzie jest zainstalowany kompilator 'mingw64'? Do tego 'mingw64-x86_64-gcc-g ++' co powinienem ustawić w './configure --target = ???' – Admia