Problème script shell raccourci compilation

Bonjour,
pourriez-vous m'indiquer s'il y a une erreur dans ce script shell :

#!/bin/bash

CGRAPH_DIR="/home/flo/Desktop/C_graphique"
LIB="$CGRAPH_DIR/lib"
INCLUDE="$CGRAPH_DIR/include"

gcc $* -I$INCLUDE -L$LIB `pkg-config --libs --cflags gtk+-2.0` -lpthread -lgraphics

C'est pour pouvoir utiliser la bibliothèque graphique "graphics.h" lors de la compilation. Mais lorsque je tape gcc_graphique -Wall -Werror -O mon_prog.c, cela m'affiche que la commande gcc_graphique est inconnue.
Merci d'avance.
Configuration: Linux
Firefox 2.0.0.3

13 réponses

  1. Modérateur
    Salut,

    Mais lorsque je tape gcc_graphique -Wall -Werror -O mon_prog.c, cela m'affiche que la commande gcc_graphique est inconnue.

    Alors tape
    ./gcc_graphique -Wall -Werror -O mon_prog.c
    voir pour plus d'infos executer un script shell
    0
    1. Mais en fait où je dois placer mon script ? car si je le met dans le meme répertoire que mon prog.c, cela m'affiche :
      /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o: In function `_start':
      (.text+0x18): undefined reference to `main'
      collect2: ld a retourné 1 code d'état d'exécution

      Faut-il que je le mette dans le même répertoire que mon prog ?
      0
      1. Modérateur
        Tu le mets à l'emplacement où la compilation manuelle fonctionne.
        0
        1. Ok, mais c'est où que la compilation manuelle fonctionne ? Je te remercie de prendre le temps de m'aider lami20j
          0
          1. Modérateur
            l'emplacement de ton fichier graphics.h c'est bien celui-là?
            /home/flo/Desktop/C_graphique/lib/include/graphics.h

            affiche la ligne #include de ton fichier .c qui concerne graphics.h
            0
            1. Mon fichier graphics.h se trouve : /home/flo/Desktop/C_graphique/include/graphics.h, dans /home/flo/Desktop/C_graphique/lib/ j'ai libgraphics.a En copiant mon script dans le répertoire de graphics.h sa ne marche toujours pas quand je tape la commande gcc_graphique dans le terminal.
              0
              1. Plus précisement, mon message d'erreur est :bash: gcc_graphique : commande introuvable
                Ne serait-ce pas une histoire de .bashrc ? si oui que dois-je faire ?
                0
                1. ahhh !! j'avais complètement oublié; oui c'est ça, d'ailleurs je crois que je dois copier le dot.bash_profile plutot
                  0
                  1. bobo31 tu pourrais me dire ce qu"il faut que je fasse là stp ? je galère avec les bash, je sais pas lesquels prendre, et où les copier. Merci d'avance
                    0
                    1. Justement, j'ai suivi la procédure ^^ et ca marche pas. Comment je peux faire pour que mon bash remplace mon gcc_graphique puisque j'ai cru comprendre que c'était un alias.
                      0
                      1. Modérateur
                        Salut,

                        lami20j@debian:~/src$ pwd
                        /home/lami20j/src
                        lami20j@debian:~/src$ tar xzf C_graph.tgz
                        lami20j@debian:~/src$ cd C_graphique/src
                        lami20j@debian:~/src/C_graphique/src$ pwd
                        /home/lami20j/src/C_graphique/src
                        lami20j@debian:~/src/C_graphique/src$ head graphics.c
                        #include <stdio.h>
                        #include <stdlib.h>
                        #include <gdk/gdk.h>
                        #include <gtk/gtk.h>
                        #include <pthread.h>
                        #include <signal.h>
                        #include <unistd.h>
                        #include "graphics.h"
                        
                        GdkPixmap *Pixmap;
                        lami20j@debian:~/src/C_graphique/src$ find /usr/include/ -name 'g[dt]k.h'
                        /usr/include/gtk-1.2/gtk/gtk.h
                        /usr/include/gtk-1.2/gdk/gdk.h
                        /usr/include/gtk-2.0/gtk/gtk.h
                        /usr/include/gtk-2.0/gdk/gdk.h
                        Sur mon système j'ai les fichiers gdk.h et gtk.h dans /usr/include/gtk-2.0 donc j'ai du modifier le graphics.c et recompiler graphics.h. Voilà le fichier graphics.c après modifications
                        Il faut vérifier chez toi avec la commande find (voir plus haut )
                        lami20j@debian:~/src/C_graphique/src$ head graphics.c
                        #include <stdio.h>
                        #include <stdlib.h>
                        #include <gtk-2.0/gdk/gdk.h>
                        #include <gtk-2.0/gtk/gtk.h>
                        #include <pthread.h>
                        #include <signal.h>
                        #include <unistd.h>
                        #include "graphics.h"
                        
                        GdkPixmap *Pixmap;
                        lami20j@debian:~/src/C_graphique/src$ make
                        gcc -Wall -g -c graphics.c -I../include `pkg-config --cflags gtk+-2.0`
                        ar -rv ../lib/libgraphics.a graphics.o
                        r - graphics.o
                        gcc test.c -Wall -g -o test -I../include -L../lib `pkg-config --cflags --libs gtk+-2.0` -lpthread -lgraphics


                        Changement de répertoire et le contenu de gcc_graphique avant la modification
                        lami20j@debian:~/src/C_graphique/src$ cd ../utils/
                        lami20j@debian:~/src/C_graphique/utils$ cat gcc_graphique
                        #!/bin/bash
                        
                        CGRAPH_DIR="/Infos/lmd/2005/licence/ue/li221-2005oct/C_graphique"
                        LIB="$CGRAPH_DIR/lib"
                        INCLUDE="$CGRAPH_DIR/include"
                        
                        gcc $* -I$INCLUDE -L$LIB `pkg-config --libs --cflags gtk+-2.0` -lpthread -lgraphics

                        gcc_graphique après modifications
                        lami20j@debian:~/src/C_graphique/utils$ cat gcc_graphique
                        #!/bin/bash
                        
                        CGRAPH_DIR="/home/lami20j/src/C_graphique"
                        LIB="$CGRAPH_DIR/lib"
                        INCLUDE="$CGRAPH_DIR/include"
                        
                        gcc $* -I$INCLUDE -L$LIB `pkg-config --libs --cflags gtk+-2.0` -lpthread -lgraphics


                        je copie le fichier test.c dans le répertoire utils

                        lami20j@debian:~/src/C_graphique/utils$ cp -v ../src/test.c .
                        `../src/test.c' -> `./test.c'
                        lami20j@debian:~/src/C_graphique/utils$ ls
                        gcc_graphique  Makefile  test.c

                        Je compile en utilisant gcc_graphique, le fichier en sortie s'appelle a.out
                        Pour l'exécuter tu tape ./a.out ou /home/lami20j/src/C_graphique/utils/a.out
                        lami20j@debian:~/src/C_graphique/utils$ ./gcc_graphique test.c
                        lami20j@debian:~/src/C_graphique/utils$ ls
                        a.out  gcc_graphique  Makefile  test.c
                        lami20j@debian:~/src/C_graphique/utils$ ./a.out


                        Mais tu n'est pas obligé de copier le fichier, tu peux le compiler de n'importe où
                        lami20j@debian:~$ pwd
                        /home/lami20j
                        lami20j@debian:~$ src/C_graphique/utils/gcc_graphique src/C_graphique/src/test.c
                        lami20j@debian:~$ ls -l a.out
                        -rwxr-xr-x 1 lami20j lami20j 31412 2007-10-07 10:44 a.out
                        lami20j@debian:~$

                        Voici le résultat https://www.cjoint.com/?khk66zJhZD ;-)

                        0