Compiler du C à la volée Script C
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;
}