Compiler du C à la volée Script C

, par MiKaël Navarro

Comment exécuter du code C comme un script ?

Deux solutions s’offrent à nous :
 Compiler à la volée (via un script shell),
 Ou utiliser le compilateur TCC.

Compilation à la volée

La première solution consite à encapsuler notre code C dans un script shell :

#! /bin/sh
cat <<-. >/tmp/cs.$$.c && gcc -Wall -o /tmp/cs.$$ /tmp/cs.$$.c && /tmp/cs.$$ $*; rm -f /tmp/cs.$$*

#include<stdio.h>

int main() {
   printf("Hello Word!\n");
   return 0;
}
.

Ou plus simplement :

#! /bin/sh
tail -n +3 $0 >/tmp/cs.$$.c && gcc -Wall -o /tmp/cs.$$ /tmp/cs.$$.c && /tmp/cs.$$ $*; rm -f /tmp/cs.$$*; exit

#include<stdio.h>

int main() {
   printf("Hello Word!\n");
   return 0;
}

Tiny CC

TCC est un tout petit compilateur C écrit par fabrice Bellard sous license GNU LGPL :
 Il permet de compiler et d’exécuter du code C n’importe où, par exemple d’une disquette de secours (environ 100 Kio pour l’exécutable TCC, incluant le préprocesseur et compilateur C, l’assembleur et l’éditeur de liens).
 Il génère du code x86 moyennement optimisé. Il compile, assemble et lie environ 9 fois plus vite que gcc.
 Le C ANSI et la norme ISO C99 sont bien supportés. De nombreuses extensions GNU C sont gérées.
 Il inclut un système de vérification de la mémoire et de ses accès. Ce système peut être mixé au code utilisateur.
 Il peut compiler et exécuter un source C sans édition de liens ou assemblage.
 La bibliothèque libtcc permet à n’importe quel programme de générer et exécuter dynamiquement du code.

Sous Linux, il peut être utilisé comme un interpréteur C : il suffit d’ajouter #!/usr/local/bin/tcc -run à la première ligne du source C, et de l’exécuter directement depuis la console.

Ex. :

#!/usr/local/bin/tcc -run

#include <stdio.h>

int main() {
   printf("Hello World\n");
   return 0;
}

P.-S.

Ne pas oublier le C Shell qui propose une syntaxe proche de celle du langage C...