Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum Astuces.divers

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

Posté par Salagnac () le 21 décembre 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 &...).

> Lire le message (14 commentaires, moyenne: 1,1).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Re: Compiler du C à la volée

Posté par sn00py () le 22/12/2003 à 14:41. (lien). É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 Matthieu Moy (page perso, ) le 24/12/2003 à 12:43. (lien). É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 Castor666 () le 04/01/2004 à 09:29. (lien). Évalué à 1.

    Je dirais même :
    - #!/bin/sh
    + #! /bin/sh

    Certains systèmes UNIX (ceux basés sur 4.2BSD) prennent un nombre magique sur quatre octets, réclamant un espace après le !, #! /bin/sh.
    ( http://absfr.tuxfamily.org/abs-2.2-fr/sha-bang.html(...) )

    • [^]Re: Compiler du C à la volée

      Posté par Gniarf () le 20/02/2004 à 19:38. (lien). Évalué à 1.

      BSD pux0rz, dans ce cas.

      --
      Windows has no users. It has hostages.
  • [^]Re: Compiler du C à la volée

    Posté par gnap gnap (page perso, ) le 12/03/2004 à 17:21. (lien). Évalué à 1.

    Mouais, sur un Unix décent, /bin/bash devrait fonctionner, même sans être le shell par défaut...

    • [^]Re: Compiler du C à la volée

      Posté par Krunch (Jabber id, page perso, ) le 25/04/2004 à 10:46. (lien). Évalué à 1.

      Bash n'est pas le seul shell existant. En cherchant un peu doit y avoir moyen de trouver des *nix sur lesquels Bash n'est pas installé par défaut.

      --
      Free Softwares Users Group Arlon (Sud Luxembourg, Belgique)
      pertinent, e adj. Approprié ; qui se rapporte exactement à ce dont il est question.

Re: Compiler du C à la volée

Posté par TImaniac (page perso, ) le 25/12/2003 à 19:00. (lien). É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 Obsidian () le 26/12/2003 à 01:43. (lien). Évalué à 3.

    Berk.

Re: Compiler du C à la volée

Posté par Salagnac () le 19/01/2004 à 13:40. (lien). É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 Bungee Tux () le 29/04/2004 à 15:28. (lien). É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 doublehp (page perso, ) le 10/05/2004 à 10:44. (lien). É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 ...

--
www.doublehp.org
le site qui sera toujours en construction ...

Pike

Posté par Pooly (page perso, ) le 28/05/2004 à 15:50. (lien). Évalué à 1.

met toi a Pike, ca ira mieux...

  • [^]Re: Pike

    Posté par Marc () le 31/05/2004 à 12:55. (lien). Évalué à 2.

    il doit aussi y avoir cint. Pratique les interpreteur C/C++

[+] Compatibilité

Posté par superna (Jabber id, page perso, ) le 15/07/2005 à 08:49. (lien). É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;
}

:-)

Revenir en haut de page || Retourner aux forums || Retourner au forum Astuces.divers