Forum Linux.debian/ubuntu compiler header

Posté par  . Licence CC By‑SA.
Étiquettes :
0
3
jan.
2015

j'utilise geany sous debian et je na arrive pas à compiler mes fichiers.c
après #include
on me dit fatal error fichier.h no such file or directory j'ai bien verifié les noms de fichiers et la casse c'est identiques.
ceci se deroule aussi quand j'appelle la bibliothèque gtk #include même si j'ai déjà installé gtk. c'est même vérifié sur synaptic package manager. j'utilise Geany.

  • # Devel files

    Posté par  . Évalué à 3.

    Pour avoir les headers, il faut installer les paquets de développement des bibliothèques souhaitées, exemple pour gtk3 :

    apt-get install libgtk-3-dev

    • [^] # Re: Devel files

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

      Et possiblement ajouter les -L et -l qui vont bien dans les CFLAGS et LDFLAGS. pkg-config peut aider.

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # rep

    Posté par  . Évalué à 0.

    voila ce que ça donne j'ai déjà installé la libgtk et cane marche pas.

    ça ne marche pas pour tout les headers.
    mm ceux que je crée moi même

    • [^] # Re: rep

      Posté par  . Évalué à 0.

      peux-tu nous copier le message d'erreur complet ?

  • # re

    Posté par  . Évalué à 2.

    Titre de l'image j'ai déjà installé la libgtk et cane marche pas.

    ça ne marche pas pour tout les headers.
    mm ceux que je crée moi même

    • [^] # Re: re

      Posté par  . Évalué à 2.

      Par hasard, l'as-tu écrit entre guillemets dans la commande incluse ?

    • [^] # Re: re

      Posté par  . Évalué à 2.

      pourrais tu poster la partie de code ou tu fais tes includes ?

    • [^] # Re: re

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

      #include <CH.h>

      → error

      #include "CH.h"

      → ok, ça march'…

      • [^] # Re: re

        Posté par  . Évalué à 0. Dernière modification le 03 janvier 2015 à 14:25.

        Merci bcp cela marche maintenant c'est vrai j'utilisait les guillemet avant.
        Mais pour gtk ça ne marche toujours pas

        le programme:

        #include <stdlib.h>
        #include "gtk/gtk.h"
        
        int main(int argc,char **argv)
        {
            GtkWidget* p_Window;
            GtkWidget* p_Label;
            gchar* sUtf8;
        
            gtk_init(&argc,&argv);
        
            p_Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
            gtk_window_set_title(GTK_WINDOW(p_Window), "GTK+ 2.10");
            gtk_window_set_default_size(GTK_WINDOW(p_Window), 260, 40);
            gtk_window_set_position (GTK_WINDOW (p_Window), GTK_WIN_POS_CENTER);
            g_signal_connect(G_OBJECT(p_Window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
            sUtf8 = g_locale_to_utf8("La Bibliothèque GTK+ à bien été Installée !", -1, NULL, NULL, NULL);
            p_Label=gtk_label_new(sUtf8);
            g_free(sUtf8);
            gtk_container_add(GTK_CONTAINER(p_Window), p_Label);
        
            gtk_widget_show_all(p_Window);
        
            gtk_main();
        
            return EXIT_SUCCESS;
        }
        
        ...

        j'ai essayé ma commande que vous m'avez envoyé apt-get install gtk-3-dev

        # apt-get install libgtk-3-dev
        Reading package lists... Done
        Building dependency tree       
        Reading state information... Done
        libgtk-3-dev is already the newest version.
        0 upgraded, 0 newly installed, 0 to remove and 186 not upgraded.
        gcc -Wall -c "gt.c" (in directory: /root/Desktop)
        gt.c:2:21: fatal error: gtk/gtk.h: No such file or directory
        compilation terminated.
        Compilation failed.
        • [^] # Re: re

          Posté par  . Évalué à 4.

          mes souvenirs de C sont loin et je dis peut-etre une betise, mais il me semble
          qu' il faut :

          • utiliser les include "lib.h" quand c'est dans le dossier courant
          • utiliser include <lib.h> quand c'est dans les dossiers du systeme

          la preuve, ca marchait avec ton include "CH.h"
          et ca marche avec ton include <stdlib.h>

          du coup si j'etais toi, je ferais un include <gtk.h>

        • [^] # Re: re

          Posté par  . Évalué à 2.

          essaie ça :
          gcc gt.c $(pkg-config --cflags --libs gtk+-2.0) -Wall -c

          sinon je te conseille de faire un Makefile, ce sera moins chiant que de compiler à la main à chaque fois.

        • [^] # Re: re

          Posté par  . Évalué à 1.

          je viens de voir une erreur :

          #include "gtk/gtk.h"

          Les guillemets c'est seulement pour les .h qui sont dans le même dossier que le code source. Donc pour gtk il faut que tu mettes des "<>" comme ça:

          #include <gtk/gtk.h>

          et utiliser pkg-config pour qu'il envoie les bonnes options au compilateur.

  • # Gestion de projet et des headers

    Posté par  . Évalué à 3. Dernière modification le 06 janvier 2015 à 11:51.

    Bonjour.

    Déjà, en général, on utilise les guillemets anglais ("…") pour tout ce qui à trait au projet en cours. Comment tu gères les noms te regarde, mais, encore une fois en général, on part du principe que la racine du projet (souvent un dossier src, qui lui-même peut contenir des sous-dossiers, mais ce n'est qu'une convention) est la racine du disque (autrement dit: /, ou c:\ sous windows).
    On utilise toujours les <…> pour les libs externes.

    Ensuite, utilise un outil pour gérer ton projet (ou au moins la phase de compilation).
    Soit un IDE (code::blocks, Kdevelop, eclipse, qtcreator, peu importe. Perso j'ai bien aimé code::blocks, mais depuis je fais autrement, mais je comprend mieux qu'à mes débuts le processus de compilation aussi ;)) soit un moteur de compilation (makefile, scons, cmake… voire, pourquoi pas, l'ingérable autotools de gnu), mais ne t'embête pas à compiler le linker à la main des projets ou tu dépasses les 2 fichiers et ou tu utilises une lib externe.
    D'une part, tu gagneras en facilité, d'autre part, tu gagneras en vitesse de compilation parce qu'un bon outil te permettra de ne pas re-compiler l'ensemble de tes fichiers quand tu n'en modifies qu'un, sans parler qu'il supporteras automatiquement des options debug ou release (qui sont optimisées différemment donc).

    Bon courage.

    [edit]
    Ah, au fait, les listes d'outils que j'ai citées ne sont pas exhaustives, je ne parle que des outils dont j'ai entendu parler ou testé. Je ne connaît pas le nom de l'IDE de gnome, et je ne sait ni s'il existe, ni s'il est bien.

Suivre le flux des commentaires

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