3 points par GN⁺ 2023-07-15 | 3 commentaires | Partager sur WhatsApp
  • 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

 
ryuheechul 2023-07-15

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...

 
xguru 2023-07-16

Ah, le fait que cela soit entouré d’un bloc de code est un bug, snif.

 
GN⁺ 2023-07-15
Commentaire Hacker News
  • L’auteur a publié un billet expliquant comment patcher GCC afin de construire des exécutables réellement portables.
  • Ce patch permet de compiler avec Cosmopolitan Libc des logiciels comme vim, emacs, ninja, bash, git et gcc.
  • Les exécutables produits devraient pouvoir s’exécuter sur Linux, FreeBSD, MacOS, OpenBSD, NetBSD et Windows.
  • L’auteur fournit une liste des logiciels qui peuvent être compilés avec cette technique.
  • Un ticket existe dans le dépôt Go à ce sujet.
  • Un commentateur propose une autre approche pour construire une nouvelle cible d’OS.
  • Un autre commentateur suggère de publier une liste des logiciels compilés avec succès grâce à cette technique.
  • Quelqu’un s’interroge sur l’utilité pratique des exécutables réellement portables.
  • Un autre commentateur propose une approche différente pour gérer les constantes dans le code.
  • Une discussion porte sur l’utilisation des numéros de signal et de errno.
  • Quelqu’un remet en question la bibliothèque standard C++ et l’usage de son std::error_code.
  • Un commentateur trouve ce sujet remarquable.
  • Une discussion porte sur la constante de compilation EINVAL.