2012-05-08 9 views
12

MinGW-w64 ha estado disponible con Cygwin al menos desde December 2010. Sin embargo, me está costando usar esto para compilar casi cualquier cosa. He puesto enlaces simbólicos con alternativesCómo usar 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 

Por ejemplo, si intento compilar wget

./configure --without-ssl 
make 

errores (editado por brevedad)

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' 

Si uso

  • MinGW cáscara con MinGW gcc
  • shell Cygwin con Cygwin gcc (gcc4-core)

Entonces Wget compilará.

Basado de respuesta ak2, esto parece funcionar

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

Respuesta

19

ak2 es parcialmente incorrecto como se indica here.

La opción correcta es --host=x86_64-w64-mingw32, como descubriste. --target se usa para construir un compilador cruzado. Las opciones son:

  • --build: Lo que se está construyendo en
  • --host: Lo que se está construyendo para
  • --target: Si lo que usted está construyendo es un compilador cruzado, lo que compilador cruzado construirá para.
6

compilador MinGW-W64 de Cygwin es un compilador cruzado, porque está alojado en Cygwin, pero la orientación MinGW-W64. Sólo tiene que decir al respecto configure usando la opción --target, así:

--target=x86_64-w64-mingw32 

De esta manera, habrá make la invocación de las herramientas apropiadas. También necesitará instalar o crear versiones MinGW-w64 de cualquier biblioteca de la que el paquete que está tratando de compilar dependa.

Doblar el sistema de alternativas para tener las herramientas en /usr/bin punto en las MinGW-w64 no es una buena idea, porque de esa manera usará herramientas MinGW con encabezados y bibliotecas Cygwin, lo que conduce a errores como los usted citó arriba.

+0

He instalado el paquete 'mingw64-x86_64-gcc-g ++' en Cygwin. Sin embargo, 'which g ++' no muestra ningún 'g ++'. ¿Dónde está el compilador 'mingw64' instalado? Para este 'mingw64-x86_64-gcc-g ++', ¿qué debo configurar en './configure --target = ???' – Admia