Merci pour les réponses et surtout les liens. C’a s’éclaire un peu.
Du coup j’ai déjà pris la version 8.1 indiquée par @Olybri en 64 bits, on verra après si j’ai besoin de la version 32 bits.
Au fait, je vois de temps en temps les gens ici et ailleurs parler de klang, est-ce que c’est mieux que GCC ?
Je fuis mingw à cause de leur install bâclée de gnumake et tourne à cygwin depuis très longtemps.
J’ai jamais réussi à faire bien fonctionner make et autres outils de build genre autoconf et cmake de toute façon, du coup je m’en fiche, ne n’en ai pas besoin. Si je prends du code extérieur et que ça ne passe pas avec g++ *.cpp
+ quelques options rapidement tweakées dans les headers, via #define ou -D, je passe à autre chose.
Et au contraire cygwin, pour les fois il était inclus dans le package, il a toujours foutu un peu la m… a pseudo-simuler linux quand ça n’a pas lieu d’être.
C’est dommage que ce soit toujours aussi compliqué avec les libristes, ils font 36 distributions de presque la même chose.
Sauf erreur, compiler des applications 32 et 64 bits avec la même version de compilateur risque de pas être évident, notamment à cause du fait que le système
de gestion d’exception n’est souvent pas le même, et que certaines libs ne soient pas fournies dans les deux versions. À mon avis, le plus simple reste
de télécharger deux versions de MinGW.
Ah bon ?
Mais alors, dans ce cas, à quoi sert le flag -m32 ?
N’y a-t-il vraiment pas moyen de compiler en 32 et 64 avec la même version ?
Pour info, voici ce que j’obtiens comme erreurs quand je tente de compiler avec -m32:
c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../libstdc++.a when searching for -lstdc++
c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../..\libstdc++.a when searching for -lstdc++
c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../libstdc++.a when searching for -lstdc++
c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lstdc++
... plein d'autres lignes similaires ...
c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib/libmsvcrt.a when searching for -lmsvcrt
c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib\libmsvcrt.a when searching for -lmsvcrt
c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib/libmsvcrt.a when searching for -lmsvcrt
c:/mingw-w64/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmsvcrt
collect2.exe: error: ld returned 1 exit status
Pour ce programme:
#include<iostream>
#include<vector> // c'est juste pour être sûr d'avoir size_t
using namespace std;
int main (int argc, char** argv) {
cout << sizeof(size_t) << endl;
return 0;
}