Compartir a través de


Mingw-w64

Nota:

MinGW no se prueba como parte del proceso de CI del repositorio vcpkg, por lo que las regresiones pueden producirse como parte de las actualizaciones de biblioteca. Las solicitudes de incorporación de cambios que mejoran el soporte técnico son bienvenidos.

Tripletas de la comunidad Mingw-w64

vcpkg incluye tripletas x64, x86, arm64 y arm community para Mingw-w64. No dependen de Visual Studio y se pueden usar de forma nativa en Windows, así como para la compilación cruzada en otros sistemas operativos. Hay dos variantes de cada triplet, seleccionando entre la vinculación estática y dinámica. Se espera que las herramientas reales (g++ etc.) se llamen con prefijos concretos.

Architecture Tripletos de la comunidad de vcpkg Prefijo de nombre de herramienta
x64 x64-mingw-dynamic, x64-mingw-static x86_64-w64-mingw32-
x86 x86-mingw-dynamic, x86-mingw-static i686-w64-mingw32-
ARM64 arm64-mingw-dynamic, arm64-mingw-static aarch64-w64-mingw32-
ARM arm-mingw-dynamic, arm-mingw-static armv7-w64-mingw32-

Estos triples no se prueban mediante la integración continua, por lo que muchos puertos no se compilan e incluso los puertos existentes pueden interrumpirse en las actualizaciones de puertos. Debido a esto, la participación de la comunidad es fundamental.

Uso de Mingw-w64 de forma nativa en Windows

Con MSYS2, es posible crear fácilmente un entorno completo para compilar puertos con Mingw-w64 en un equipo Windows.

Al compilar software para entornos de Windows nativos, debe usar un subsistema mingw de MSYS2 e instalar algunos paquetes (con un prefijo específico) para este subsistema.

Arquitectura Triplets vcpkg subsistema prefijo del paquete
x64 x64-mingw-dynamic, x64-mingw-static mingw64 mingw-w64-x86_64-
x86 x86-mingw-dynamic, x86-mingw-static mingw32 mingw-w64-i686-

Después de la instalación básica de MSYS2, deberá instalar algunos paquetes adicionales para el desarrollo de software, por ejemplo, para x64:

pacman -S --needed git base-devel mingw-w64-x86_64-toolchain

El subsistema activo se selecciona ejecutando la aplicación MSYS2 MinGW o cambiada en un terminal en ejecución.

source shell mingw64   # for x64, or "mingw32" for x86

El arranque de vcpkg se realizará ejecutando bootstrap-vcpkg.bat. Este comando descargará el vcpkg.exe oficial.

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat

Para compilar paquetes, debe indicar a vcpkg que desea usar el triplete mingw. Esto se puede hacer de diferentes maneras. Cuando Visual Studio no está instalado, también debe establecer el triplete host en mingw. Esto es necesario para resolver las dependencias del host. Para mayor comodidad, puede usar variables de entorno para establecer ambos triples:

export VCPKG_DEFAULT_TRIPLET=x64-mingw-dynamic
export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-dynamic

Ahora puede probar la configuración:

./vcpkg install zlib

Cómo evitar la combinación de instalaciones diferentes

El proyecto MSYS2 advierte explícitamente que "la combinación de programas de otras instalaciones msYS2, instalaciones de Cygwin, cadenas de herramientas del compilador o incluso otros programas no se admite y probablemente interrumpirá las cosas de maneras inesperadas". Por ejemplo, el paso adecuado de argumentos de línea de comandos con comillas y escape puede producir un error.

Pero los puertos vcpkg crean implícitamente instalaciones msYS2, por ejemplo, para pkg-config y para otras herramientas de compilación necesarias para tratar los paquetes basados en autoconf. En concreto, cuando los puertos anteponen el directorio de herramientas a la PATH variable de entorno, esto puede cambiar qué herramienta con un nombre determinado se invoca realmente y cómo se pasan los argumentos entre herramientas.

Para mitigar estos problemas al trabajar con una instalación completa de MSYS2, intente mantener los directorios del subsistema msys (/usr/bin, bin) fuera de la PATH variable de entorno tal como se encuentra en vcpkg. En Bash, puede modificar solo PATH para una sola llamada de vcpkg:

PATH="${PATH/:\/usr\/bin:\/bin:/:}" ./vcpkg install libpq

Como alternativa, puede ejecutar vcpkg desde un símbolo del sistema normal, después de agregar solo el directorio mingw deseado (por ejemplo C:\msys64\mingw64\bin, ) a PATH.

Al usar vcpkg para CI con imágenes estándar en Azure Pipelines, Acciones de Github o similares, el valor predeterminado PATH podría contener más directorios que crean una combinación de programas MSYS2 de diferentes instalaciones. Es posible que desee establecer manualmente los directorios deseados PATH o quitar que contengan sh.exe, bash.exemsys-2.0.dll o cygwin1.dll.

Uso de Mingw-w64 para compilar programas de Windows en otros sistemas

Puede usar los tripletes de la comunidad de vcpkg mingw con cadenas de herramientas en equipos que no son Windows para ejecutar software entre compilaciones para ejecutarse en Windows. Muchas distribuciones de Linux ofrecen estas cadenas de herramientas en paquetes opcionales con un sufijo o prefijo mingw-w64. Por ejemplo, para distribuciones basadas en Debian, empezaría con este comando de instalación para la cadena de herramientas x64:

sudo apt-get install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64

Las versiones empaquetadas de cadenas de herramientas Mingw-w64 en distribuciones de Linux pueden ser versiones anteriores que carecen de algunas características útiles o correcciones de errores. MXE ofrece una cadena de herramientas independiente alternativa.

Para el arranque de vcpkg, clone el repositorio de GitHub y ejecute el bootstrap-vcpkg.sh script:

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg install zlib:x64-mingw-dynamic