@PaliPalo
Dans l’ordre :
@Athozus veut écrire un seul code source, a priori portable sur d’autres OS, et qu’on doit compiler sur chaque OS. C’est le plus gros intérêt de Qt à mon avis.
Les binaires pour Windows sont compilés sous Windows (avec les outils Microsoft ou mingw), ou sous Linux pour Windows avec mingw, qui utilise une toolchain gcc / c++ dédiée (par exemple)
En ce qui me concerne, je n’ai utilisé ce genre de binaire (multi-architecture) sur Mac OS X uniquement quand je m’occupais du port OpenOffice. C’est Pavel Janik qui m’avait initié, et on produisait des gros blobs qui fonctionnaient partout.
Pour les dll : la différence entre un binaire exécutable et une bibliothèques (partagée = dll sous Windows), c’est que dans le binaire exécutable il y a une fonction main, qui est LA SEULE à pouvoir intéragir avec le système d’exploitation -c’est la raison pour laquelle il n’y a qu’une fonction main) + les points d’entrée des bibliothèques « liées » (lors de l’édition de lien, dernière étape de la compilation. Cela signifie que l’on peut linker une partie du binaire (préfixée par exemple) avec une architecture et une autre partie avec une autre. ça devrait pouvoir se faire amha. Que ce soit pour le binaire exacutbale ou une bibliothèque partagée, peu importe.
En ce qui concerne la création de bibliothèques (aka library en anglais) 32 et 64 bits, je n’ai pas vérifié si lipo le permet sur Mac OS X. Les sources sont là : sources de lipo. Pour l’adapter à Linux, je pense qu’il faut modifier le code de lipo.c car l’ABI sous Linux n’est pas la même que sur Mac OS X, et le problème de l’alignement risque de poser quelques problèmes aussi. AMHA : rien ne l’interdit a priori sous Linux, mais peut-être que cela n’a jamais été fait. On parle aussi de lipo sur StackOverflow. Et si vous avez les outils développeur sur Mac OS X, essayez de faire man lipo dans un terminal.
Une dernière chose à propos de Mac OS X : je parie qu’on doit pouvoir compiler des binaires utilisables sur x86_64 ET sur aarch64 (je serais étonné qu’on soit seulement en 32 bits sur les M1, car bonjour la manipulation de grosses images dans ce cas :-/
Sous Windows (je ne suis pas un spécialiste toutefois) : après vérification, Microsoft a deux répertoires distincts ce qui permet la rétro-compatibilité : on peut faire tourner n’importe quoi sous Windows, même des vieux binaires (je n’ai que wine sous Linux, et la cross-compilation marche pas mal du tout). Mais les binaires ne sont pas des « fat binaries », en effet.
Donc en effet, sous Windows, ils ont apparemment choisi de séparer. Cela n’interdit pourtant pas de créer ce type de binaires (mais je peux me tromper aussi).
Enfin, si je n’ai rien oublié, sous Linux, tout est séparé, et je n’ai pas la réponse. Le reproche qu’on faisait aux archives UB, c’était leur lourdeur, et c’est peut-être la raison pour laquelle tout le monde a laissé tomber. Toutefois, la documentation Debian laisse penser que c’est pensable (possible, je ne pense pas, car c’est assez crade et coûte cher en stockage pour des gains moindres).
Pour plus d’informations je suggère de voir la documentation Debian , où le choix de séparer a clairement été fait.
Avis personnel : je continue de penser que c’est possible de tout mettre dans le même binaire, exécutable comme bibliothèque (library en anglais) sous Linux, mais avec modification de lipo.c obligatoire, ABI, alignement, éditions de liens à faire en double.
En espérant avoir répondu plus précisément
EDIT : ajout d’un lien important sur les UB
EDIT2 : on pourrait utiliser des applis 32 bits sur Mac OS X
EDIT3 : La réponse est OUI sur Mac OS X: mélanger 32 bits et 64 bits avec lipo