w64 para instalar descargar windows g++ mingw-w64

instalar - mingw para windows 7 64 bits



Significado de las opciones en el instalador mingw-w64 (1)

Excepciones

Por favor, vea esta respuesta para los tres modelos (enano, sjlj y seh) .

Trapos

Puede decidir qué tipo de subprocesos desea utilizar: subprocesos POSIX o subprocesos API de Windows. Los hilos posix tienen la ventaja de la portabilidad; puede utilizar su código en otras plataformas posix (por ejemplo, linux) sin modificaciones. La api para enhebrar win32 es solo para windows. Si estás al 100% en Windows y te gusta la API, no hay problema.

Si usa nuevas funciones de C ++ como std::thread el impacto es menos visible ya que ya tiene una API estándar para subprocesos. No estoy seguro de si realmente hay una gran diferencia si no utiliza la api de hilos posix- / win32 directamente (¿quizás std::thread handle nativos?)

Ver también: temas mingw-w64: posix vs win32

Revisión de la compilación

Supongo que es solo otro número de versión ya que Mingw (-w64) sigue las versiones de GCC (4.8.x, 4.9.x etc.). Si no necesita una compilación específica, debe usar la última versión.

Tema de enhebrado

Si la excepción lanzada es:

terminate called after throwing an instance of ''std::system_error'' what(): Enable multithreading to use std::thread: Operation not permitted

luego simplemente enlace pthreads - y el problema está resuelto.

Recomendación

Si no tienes razones para usar una opción específica; mi recomendación personal:

posix - dwarf - 2

  • Posix habilita C ++ 11 <thread> , <mutex> y <future>
  • enano es mas rapido
  • 2 porque es la última versión

En el instalador en línea de MinGW-W64 hay varios campos que puede seleccionar. Sin embargo, no puedo encontrar ninguna documentación sobre esto, y las conjeturas que he hecho no me dan el comportamiento que quiero.

Es evidente que se ha trabajado mucho en este proyecto, por lo que parece una lástima que la falta de documentación básica esté frenando su aceptación.

Los campos "Versión" y "Arquitectura" se explican por sí mismos, pero los otros campos con los que tengo problemas son (los valores se muestran a partir del instalador actual):

  • Hilos , opciones posix y win32
  • Excepción , opciones dwarf y sjlj
  • Revisión de compilación , opciones 0 , 1 , 2 .

Los valores que elegí en mi instalación anterior fueron win32 , seh y 1 (claramente las opciones han cambiado desde entonces, pero no soy consciente de qué es qué).

¿Cuáles son los pros y los contras de cada opción, especialmente el modelo de subprocesos y el manejo de excepciones, y cuál es la mejor versión?

Los problemas específicos que he encontrado al usar x86_64-win32-seh-rev1 son:

  • std::thread y std::condition_variable no son compatibles
  • Cuando se depura (utilizando Code :: Blocks as IDE), si se lanza una excepción, no salta al controlador de excepciones; seleccionar Next Line no hace nada 3 veces y luego aborta la ejecución.

Puedo lidiar con el problema de la depuración, pero sería muy bueno tener subprocesos de trabajo de C ++ 11.