Forum Astuces.divers [Terminal] Compiler du C à la volée

Posté par  .
Étiquettes : aucune
0
21
déc.
2003
Voilà comment programmer en "script C" (compilé à la volée). C'est pas très beau/propre, mais des fois on a besoin, et ça c'est suffisament rustique pour passer n'importe où, c'est rapide à mettre en oeuve, et c'est vraiment pratique.

Ovrez un fichier dans votre éditeur favori (emacs, évidemment) et tapez le code suivant:


#!/bin/bash
total_lignes=`cat $0 | wc -l` ; ligne_arob=`grep "@""@" -m 1 -n $0 | cut -f1 -d:`
cat $0 | tail -$[ $total_lignes - $ligne_arob ] > /tmp/cs.$$.c
gcc -Wall -o /tmp/cs.$$ /tmp/cs.$$.c && /tmp/cs.$$ $* ; rm /tmp/*$$* ; exit
@@ fin de l'en-tête


à la suite on met un fichier C des familles (avec main(), et tout), on enregistre ça (j'ai pris l'habitude de nommer les fichiers avec le suffixe .cs), on chmod +x et roulez jeunesse (les arguments passent, ça peut se lancer avec un &...).
  • # Re: Compiler du C à la volée

    Posté par  . Évalué à 2.

    On peut aussi faire un script qui vire la 1ère ligne d'un fichier avant de le compiler et de l'executer.

    Ainsi dans nos 'scripts C' il suffit de mettre :
    #!/chemin/de/mon/script

    evidement, c'est moins pratique si on veut distribuer les 'scripts C',
    mais un 'script C' c'est bien pour faire 'un truc en vitesse', non ?
  • # Re: Compiler du C à la volée

    Posté par  (site web personnel) . Évalué à 1.

    > c'est suffisament rustique pour passer n'importe où,

    Alors dans ce cas,

    - #!/bin/bash
    + #!/bin/sh
  • # Re: Compiler du C à la volée

    Posté par  (site web personnel) . Évalué à 1.

    ps : les fichiers .cs c'est pour les fichiers sources en C# (C Sharp) ;)
  • # Re: Compiler du C à la volée

    Posté par  . Évalué à 2.

    On m'a aussi répondu sur un journal: http://linuxfr.org/~Salagnac/4500.html(...) , dans lequel il m'est apparu qu'il y avait bien plus élégant :

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

    suivi du fichier C (voir http://linuxfr.org/comments/251426.html(...) ). Enjoy !
  • # Re: Compiler du C à la volée

    Posté par  . Évalué à 1.

    je trouve ca dommage de compile avec tous les warning allumes et sans dire depeche toi de compiler au compilateur .

    allez moi j'enleve -Wall
    je rajoute un -O0 pour etre sur qu'il ne tente pas d'optimizer
    et un -pipe pour qu'il fasse tout en memoire .
  • # j ai 100 fois plus propre et plus petit

    Posté par  (site web personnel) . Évalué à 0.

    j ai 100 fois plus propre avec un truc fait pour ... mais au lieu de diverger 3 ans ... je vais simplement donner un exemple :

    http://www.doublehp.org/tcc.png(...)

    ca montre la fois la puissance du system et sa legerete, donc la possibilite de l inclure dans un system minimaliste : vous avez plus minimaliste qu une disquette d install potatoe dans un vmware avec 16Mo de RAM ?

    le compilateur et sa librairie prennent a eux deux 76544 Ko ...
  • # Pike

    Posté par  (site web personnel) . Évalué à 1.

    met toi a Pike, ca ira mieux...
    • [^] # Re: Pike

      Posté par  . Évalué à 2.

      il doit aussi y avoir cint. Pratique les interpreteur C/C++
  • # Compatibilité

    Posté par  (site web personnel) . Évalué à -1.

    Bon ben voila un test qui fonctionne trés bien sous Max Os X et Linux Woody :
    (en utilisant les commentaires precedants)

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

    #include <stdio.h>

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

    :-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.