- Un ingénieur logiciel a écrit un patch pour GCC afin de simplifier la création d’exécutables réellement portables avec Cosmopolitan Libc.
- Ce patch permet de compiler avec Cosmopolitan Libc des logiciels populaires comme
bash, curl, git et même gcc, sans modifier leur code source.
- Les exécutables générés peuvent fonctionner sur Linux, FreeBSD, MacOS, OpenBSD, NetBSD et, dans certains cas, sur Windows.
- L’article fournit des instructions étape par étape pour porter son propre logiciel vers Cosmopolitan Libc.
- Ce patch résout des problèmes liés aux instructions
switch et aux initialisations de structures qui dépendent de valeurs système.
- Au départ, l’auteur a essayé d’automatiser la transformation avec
sed et des scripts Python à cause du préprocesseur C et des ifdef, mais cela n’a pas entièrement fonctionné.
- L’auteur a ensuite exploré l’usage d’un plugin GCC, puis la modification de GCC lui-même pour résoudre le problème.
- Avec ce GCC patché, il devient possible de compiler des logiciels avec Cosmopolitan Libc, ce qui rend le processus de portage plus simple et plus fluide.
- L’auteur a réussi à compiler
lua et a apporté des modifications à python3.11 pour accéder à un dépôt ZIP.
- L’auteur a rencontré des difficultés en compilant
busybox, qui utilise des tableaux de chaînes comme tables de correspondance.
- Il y a aussi eu des difficultés avec l’initialisation de structures dans
ncurses à cause d’expressions binaires.
- L’auteur conclut que, dans la plupart des cas, les modifications nécessaires pour porter un logiciel vers Cosmopolitan Libc sont minimes.
- L’auteur reconnaît que le patch n’est peut-être pas parfait et qu’il peut comporter certaines limitations.
- L’auteur encourage les lecteurs à essayer de compiler leurs logiciels C avec Cosmopolitan Libc.
- L’auteur évoque la possibilité d’exécuter les exécutables sous Windows, mais ne l’a pas testée.
- L’auteur fournit des informations complémentaires et des références.
3 commentaires
Neo adopte désormais un format qui encadre les messages dans des blocs de code ? Le besoin de faire défiler horizontalement et la couleur de texte un peu trop dans les tons rouges sont un peu regrettables...
Ah, le fait que cela soit entouré d’un bloc de code est un bug, snif.
Commentaire Hacker News
errno.std::error_code.