Outils pour utilisateurs

Outils du site


pages:norae:si:dev_note-3_liste_ressources-c

Librairie Cosmopolitan C

créer de petits exécutables d'environ 40 ko qui fonctionnent sous Linux, Mac, Windows, FreeBSD et OpenBSD. Dans le même binaire.

Cosmopolitan fait du C un langage à exécution unique, similaire à Java, sauf qu'il ne nécessite pas d'interprèteur ou de machines virtuelles à installer au préalable.

Cosmopolitan offre les mêmes avantages de portabilité que les langages de haut niveau comme Go et Rust, mais il n'invente pas un nouveau langage et vous n'aurez pas besoin de configurer un système de CI pour construire des binaires séparés pour chaque système d'exploitation.

Ce sur quoi Cosmopolitan se concentre, c'est la correction du C en le découplant des plates-formes, de sorte qu'il puisse être agréable à utiliser pour écrire de petits programmes unix qui sont facilement distribués à un public beaucoup plus large.

Pour commencer

En supposant que vous ayez GCC sous Linux, il vous suffit de disposer des cinq fichiers supplémentaires dont le lien figure ci-dessous :

# create simple c program on command line
echo '
  main() {
    printf("hello world\n");
  }
' >hello.c

Compilons :

# run gcc compiler in freestanding mode
gcc -g -Os -static -fno-pie -mno-red-zone -nostdlib -nostdinc -o hello.com hello.c \
  -Wl,--oformat=binary -Wl,--gc-sections -Wl,-z,max-page-size=0x1000 \
  -Wl,-T,ape.lds -include cosmopolitan.h crt.o ape.o cosmopolitan.a

ici nous avons :

voir github/cosmoploitant

Exécution du programme :

# ~40kb static binary (can be ~16kb w/ MODE=tiny)
./hello.com

La commande ci-dessus corrige GCC afin qu'il produise des binaires portables qui fonctionneront sur toutes les distributions Linux en plus de Mac OS X, Windows NT, FreeBSD et OpenBSD également. Pour plus de détails sur le fonctionnement de cette commande, veuillez lire le post du blog αcτµαlly pδrταblε εxεcµταblε (en). Ce nouveau format binaire est également facultatif : les binaires ELF classiques peuvent être compilés en supprimant le drapeau -Wl,–oformat=binaire.

Vous avez écrit un programme C normal, et grâce à la magie des linkers de bas niveau de Cosmopolitan, vous avez effectivement créé votre propre système d'exploitation qui fonctionne également sur tous les systèmes existants.

pages/norae/si/dev_note-3_liste_ressources-c.txt · Dernière modification : 2021/08/06 11:05 de xavcc