Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Plateformes Discussion :

Pourquoi pas de distribution MinGW64 ?


Sujet :

Plateformes

  1. #1
    Membre actif
    Pourquoi pas de distribution MinGW64 ?
    Bonjour,

    comme je suis en train de recompiler une Qt 5.6.2 en MinGw64, tout en pestant contre cette perte de temps, je me demandais pourquoi il y a des binaires MinGw32 sur le site de téléchargement et pas de MinGw64 alors qu'on y trouve des VS20xx à la pelle ?

    Pourquoi cet ostracisme ? Une stratégie économique ? Un problème technique ?

    Cordialement. AD.

  2. #2
    Expert éminent sénior
    Salut,


    Il faut déjà comprendre que l'on ne peut pas garantir que la dll d'une version quelconque de Qt compilée avec Gcc-4.8.x ne pourra être utilisée avec Gcc-4.9, Gcc-5 ou Gcc-6 et (encore moins) que la compatibilité descendante est encore moins bien garantie.

    Je fais volontairement l'impasse sur les versions plus anciennes encore de Gcc, car j'estime qu'elles sont vraiment trop obsolètes

    Mais il se fait que les options de compilation (non seulement de Qt, mais aussi de Gcc) peuvent également avoir une insidence sur la compatibiltié des dll utilisées avec une même version du compilateur (qui aurait "simplement" été compilé avec d'autres options)...

    Et c'est là que se pose le principal problème : le compilateur de Visual Studio a été compilé avec les mêmes options pour toutes les versions équivalentes, si bien que l'on peut garantir que les dlls compilées avec -- mettons -- VC++2010 fonctionneront sur toutes les machines utilisant VC++2010.

    Avec Gcc, il en va vraiment pas de même : même si on parle de MinGW (version 32 bits), on peut le trouver compilé avec différentes options. Alors, la version 64 bits, je ne te raconte pas! Entre le support (ou non) du multilib, les différentes versions des dépendances (je pense à GMP, MPFR et toutes les autres), etc... Le seul moyen de garantir que les dll seront effectivement utilisable avec une version (quelconque) de Gcc est... de fournir le compilateur en même temps que les dlls.

    Pendant tout un temps, j'ai personnellement créé certaines distributions pour MinGW-w64, généralement pour une version compilée "a mano" de la dernière version de Gcc, et je les rendais disponibles au téléchargement. Mais je te laisse imaginer le temps qu'il me falait pour, en plus de compiler Qt, arriver à compiler Gcc, les binutils et toutes leurs dépendances!

    Pour l'instant, je travaille essentiellement sous linux, et je n'ai une connection internet que... sporadique. Je ne produit donc plus ni le compilateur ni les "distributions" Qt

    Maintenant, l'une des dernières fois que j'ai créé ce genre de distribution, on en était encore à la version 4.XX (je ne sais plus.. 4.9 ) de Qt... Et Qt a changé de mains depuis. Je n'ai donc aucune idée de la politique suivie actuellement à ce sujet.

    Mais je peux imaginer sans trop risquer de me tromper que de nombreuses distributions sont créées par des "build servers" sur lesquels différents compilateurs sont installés.

    Peut-être l'absence d'une version pour MinGW-w64 est-elle, tout simplement, due à l'impossibilité de faire tourner un compilateur 64 bits sur ces machine Peut-être l'équipe qui se charge d'installer les compilateurs sur ces machine n'a-t-elle pas le temps ou l'envie de commencer à compiler Gcc et toutes ses dépendances en 64 bits Peut être y a-t-il une autre raison que j'ignore
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre actif
    Bonjour,

    Merci pour les explications. Pour résoudre ce problème de temps, j'utilise Msys2 et ses dépôts. Actuellement la version directement disponible est 5.6.2. MinGw 32 et 64 (dynamique ou statique). Par contre il est vrai qu'elle peut être incomplète pour certains besoins. Elle me convient. D'un autre côté je travaille également sous Linux et Mac OS et j'ai très peu de problème de portage alors qu'en utilisant VS, j'ai rencontré des codes -à priori portables- qui devaient être modifiés.

    En outre, je n'aime pas l'installation de VS, c'est le moins qu'on puisse dire. Et je compile sous Windows pour des appareils allant de XP à Windows 10 (en dynamique), rarement en statique... et avec MinGw je ne rencontre pas de problème particulier ni en XP, ni pour les versions suivantes. C'est plus compliqué avec VS pour compiler de manière compatible avec XP. Maintenant, il est vrai que je pourrais me contenter de MinGw32 mais puisqu'on peut compiler en 64 bits, je ne vois pas pourquoi je m'en abstiendrais.

    Encore merci pour ces explications. Bonne fin de journée. AD

###raw>template_hook.ano_emploi###