IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Divers problèmes compilation/include/structure


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 9
    Points
    9
    Par défaut Divers problèmes compilation/include/structure
    Bonjour,
    Je créer un nouveau sujet, dans la section débutant car je ne pense pas que mes problème ne soit solutionnable que par des "expert" , pour diverses raisons : j'ai toujours diverses problèmes lors de la compilation, que je met un temps incroyablement long a trouve(pour, la plupart du temps, des erreurs ridicule .... )

    Première question : Comment crée-t on "proprement" un tableau de structure(liste, par exemple)? ou un tableau de pointeurs vers une structure? et pour finir, un tableau 2D de pointeurs vers une structure?
    J'ai essayer diverses méthodes, certaine fonctionnent, jusqu'au moment ou l'on doit accéder a ce qu'il y a a l’intérieur de la structure contenu dans le tableau....

    Deuxième question :
    Quelles est exactement la différence entre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    liste* l;
    l=(liste*)malloc(sizeof(liste));
    ET
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    liste* l;
    l=malloc(sizeof(liste));
    Troisième question, que signifie l'erreur de compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    gcc *.o -lm -o -c TP5
    TP5: dans la fonction « __x86.get_pc_thunk.bx »:
    (.text+0x30): définitions multiples de « __x86.get_pc_thunk.bx »
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_info): réadressage 0 a un index de symbole 8 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_info): réadressage 1 a un index de symbole 9 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_info): réadressage 2 a un index de symbole 10 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_ranges): réadressage 0 a un index de symbole 4 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_ranges): réadressage 1 a un index de symbole 4 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_ranges): réadressage 2 a un index de symbole 5 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_ranges): réadressage 3 a un index de symbole 5 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_ranges): réadressage 4 a un index de symbole 6 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_ranges): réadressage 5 a un index de symbole 6 invalide
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crti.o:(.gnu.linkonce.t.__x86.get_pc_thunk.bx+0x0): défini pour la première fois ici
    TP5: dans la fonction « _fini »:
    (.fini+0x0): définitions multiples de « _fini »
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crti.o:(.fini+0x0): défini pour la première fois ici
    TP5: dans la fonction « recup »:
    (.text+0x1cb): définitions multiples de « recup »
    util.o:util.c:(.text+0x0): défini pour la première fois ici
    TP5: dans la fonction « avanceDefA »:
    (.text+0x223): définitions multiples de « avanceDefA »
    util.o:util.c:(.text+0x58): défini pour la première fois ici
    TP5: dans la fonction « data_start »:
    (.data+0x0): définitions multiples de « __data_start »
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 0 a un index de symbole 11 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 1 a un index de symbole 12 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 2 a un index de symbole 2 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 3 a un index de symbole 2 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 4 a un index de symbole 11 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 5 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 6 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 7 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 8 a un index de symbole 12 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 9 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 10 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 11 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 12 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 13 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 14 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 15 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 16 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 17 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 18 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 19 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 20 a un index de symbole 13 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): réadressage 21 a un index de symbole 22 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_line): réadressage 0 a un index de symbole 2 invalide
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o:(.data+0x0): défini pour la première fois ici
    TP5: dans la fonction « data_start »:
    (.data+0x4): définitions multiples de « __dso_handle »
    /usr/lib/gcc/i686-linux-gnu/4.8/crtbegin.o:(.data+0x0): défini pour la première fois ici
    TP5: dans la fonction « creerListesAdjacences »:
    (.text+0xfd): définitions multiples de « creerListesAdjacences »
    Graphe.o:Graphe.c:(.text+0x0): défini pour la première fois ici
    TP5:(.rodata+0x4): définitions multiples de « _IO_stdin_used »
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o:(.rodata.cst4+0x0): défini pour la première fois ici
    TP5: dans la fonction « _start »:
    (.text+0x0): définitions multiples de « _start »
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o:/build/buildd/eglibc-2.19/csu/../sysdeps/i386/start.S:115: défini pour la première fois ici
    TP5:(.rodata+0x0): définitions multiples de « _fp_hw »
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o:(.rodata+0x0): défini pour la première fois ici
    TP5: dans la fonction « main »:
    (.text+0x17c): définitions multiples de « main »
    Test.o:Test.c:(.text+0x0): défini pour la première fois ici
    TP5: dans la fonction « _init »:
    (.init+0x0): définitions multiples de « _init »
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_line): réadressage 0 a un index de symbole 4 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_line): réadressage 1 a un index de symbole 5 invalide
    /usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crti.o(.debug_line): réadressage 2 a un index de symbole 6 invalide
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crti.o:/build/buildd/eglibc-2.19/csu/../sysdeps/i386/crti.S:63: défini pour la première fois ici
    /usr/lib/gcc/i686-linux-gnu/4.8/crtend.o:(.tm_clone_table+0x0): définitions multiples de « __TMC_END__ »
    TP5:(.data+0x8): défini pour la première fois ici
    /usr/bin/ld: erreur dans TP5(.eh_frame); aucune table .eh_frame_hdr ne sera créée.
    collect2: error: ld returned 1 exit status
    make: *** [TP5] Erreur 1
    voici a quoi ressemble le makefile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    all : TP5
    Graphe.o : Graphe.c Graphe.h
    	gcc Graphe.c -c
    util.o : util.c util.h
    	gcc util.c -c
    Test.o : Test.c Graphe.h
    	gcc Test.c -c
    TP5 : Graphe.o util.o  Test.o
    	gcc *.o -lm -o -c TP5
    j'ai aussi un dossier contenant les .c .h et .o de liste et cellule que j'include dans Graphe.c par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include"lc/liste.h"
    #include"lc/cellule.h"
    Merci d'avance pour votre aide, même si vous ne voulez/pouvez pas répondre directement a certaines questions, des piste pour comprendre sont les bienvenues!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Alors...
    Première question : Comment crée-t on "proprement" un tableau de structure(liste, par exemple)? ou un tableau de pointeurs vers une structure? et pour finir, un tableau 2D de pointeurs vers une structure?
    J'ai essayer diverses méthodes, certaine fonctionnent, jusqu'au moment ou l'on doit accéder a ce qu'il y a a l’intérieur de la structure contenu dans le tableau....
    Cela dépends ce que tu appelles par "proprement".
    Si c'est un tableau statique, tu ne dois pas vraiment faire attention..
    • struct liste mylist[5]; est un tableau contenant des structures.
    • struct liste *mylist[5]; est un tableau contenant des pointeurs de structure.

    Sauf si tu alloues de la mémoire dans le tableau de pointeur.. Dans ce cas-là, ne pas oublié de free() chaque case ayant été alloué.

    Si tu veux faire un tableau dynamique par contre.. Je ne connais pas assez le sujet, donc je passe mon tour.
    Deuxième question :
    Quelles est exactement la différence entre malloc avec cast et sans cast ?
    Il n'y en a aucune. En fait, le cast du malloc est purement historique.
    Je t'invite à lire la faq C de dvp à ce sujet : Faut-il caster malloc ?

    Troisième question, que signifie l'erreur de compilation :
    Je ne garantis pas que c'est cela, mais tu dis que tes .h, .c et .o sont contenu dans divers dossier.
    Hors, dans ton makefile, tu ne dis pas à quel endroit se trouve les différents élément. (manque le chemin de chaque fichier)

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    il y a un probleme avec ton make file.

    l'option -o de gcc attend en argument le nom du fichier produit.

    TP5 : Graphe.o util.o  Test.o
    	gcc *.o -lm -o -c TP5
    la commande produit théoriquement le fichier nommé "-c" en compilant tous les fichiers .o et aussi celui nommé TP5.
    le -c est une erreur dans cette commande, vu qu'il signifie "ne pas faire l'édition de lien", alors que c'est ce qu'on attend de gcc avec des .o

    la bonne commande serait plutot gcc *.o -lm -o TP5

    Par ailleurs, sur les autres commandes de compilations, ajoute donc -Wall, puis dans un deuxieme temps -Wextra.
    Cela activera des warnings qui souligneront des fautes potentielles
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Problème compilation dû à une structure
    Par Zthoustra dans le forum Débuter
    Réponses: 18
    Dernier message: 04/01/2014, 16h13
  2. Problème d'include lors de la compilation..
    Par corgato dans le forum Qt
    Réponses: 9
    Dernier message: 03/07/2009, 14h14
  3. problème include, structure et xcode
    Par devouring strossus dans le forum Débuter
    Réponses: 6
    Dernier message: 13/05/2009, 18h46
  4. problème de compilation de structure
    Par dereck1333 dans le forum Débuter
    Réponses: 5
    Dernier message: 04/11/2008, 23h26
  5. Problème de compilation (include)
    Par sebdu94 dans le forum SL & STL
    Réponses: 4
    Dernier message: 03/05/2008, 10h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo