J'utilise Ubuntu 13.04 et j'ai installé mingw-w64 en utilisant apt-get install mingw-w64
. Je peux compiler et lier une version 64 bits fonctionnelle de mon programme avec la commande suivante:
x86_64-w64-mingw32-g++ code.cpp -o app.exe
Ce qui génère un fichier 64 bits app.exe.
Quels indicateurs binaires ou de ligne de commande dois-je utiliser pour générer une version 32 bits de app.exe?
Cela dépend de la variante de la chaîne d'outils que vous utilisez actuellement. Les deux [~ # ~] nains [~ # ~] et [~ # ~] seh [~ # ~ ] les variantes (qui viennent de GCC 4.8.0) ne sont que des cibles uniques. Vous pouvez le voir vous-même en inspectant la structure de répertoires de leurs distributions, c'est-à-dire qu'elles ne contiennent que les bibliothèques avec un adressage 64 et 32 bits, mais pas les deux. D'un autre côté, les anciennes distributions [~ # ~] sjlj [~ # ~] sont en effet à double cible, et afin de construire 32- bit cible, il suffit de fournir -m32
drapeau. Si cela ne fonctionne pas, compilez simplement avec i686-w64-mingw32-g++
.
Soit dit en passant, les trois bibliothèques de liens dynamiques correspondantes (DLL) implémentant chacune le modèle d'exception GCC sont
libgcc_s_dw2-1.dll
(DWARF);libgcc_s_seh-1.dll
(SEH);libgcc_s_sjlj-1.dll
(SJLJ).Par conséquent, pour savoir quel modèle d'exception votre distribution MinGW-w64 actuelle fournit exactement, vous pouvez soit
bin
); ou___gxx_personality_v*
(DWARF), ___gxx_personality_seh*
(SEH), ___gxx_personality_sj*
(SJLJ); voir Obtention du modèle d'exception GCC actuel .