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 :

[Compilation] Pb de compilation pour une nulle


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Par défaut [Compilation] Pb de compilation pour une nulle
    1 - Connaissez vous un site qui explique à fond les principes fondamentaux de la compilation ?
    -> différence entre compilation C et C++
    -> les différents compilateurs sous UNIX ...

    2 - j'ai un pb de compilation (qui l'eu cru ), qui est le suivant :

    gcc: -lxml2: linker input file unused because linking not done
    gcc: -lz: linker input file unused because linking not done
    gcc: -lpthread: linker input file unused because linking not done
    gcc: -liconv: linker input file unused because linking not done
    gcc: -lm: linker input file unused because linking not done
    gcc: -lsocket: linker input file unused because linking not done
    gcc: -lnsl: linker input file unused because linking not done


    Ma ligne de commande pour la compilation :
    gcc `xml2-config --cflags --libs` -I/usr/local/include/libxml2/ -Wpointer-arith -fwritable-strings -O2 -c WorkOnXml.c -o WorkOnXml.o

    Mes headers (je crois que c'est comme cela qu'on les appelle) :
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <libxml/tree.h>
    #include <libxml/xpath.h>


    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Par défaut
    j'ai trouvé, il me manquait ma fonction main

    Ceci dit, un site sur les compilateurs et makefile, ça m'interesse toujours

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Sur ta ligne de compilation, tu as 2 fois le -l/usr/local/include/libxml2/, le premier étant dans le xml2-config --libs.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Par défaut
    Ok, corrigé, merci

    Actuellement, j'ai :
    - struct.h (ensemble de structures)
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>

    struct tSource{
    char * type;
    };

    struct tTransmission{
    struct tSource source;
    };


    - WorkOnXml.c (ensemble de fonctions utilisant libXMl2 et retournant des variables de type structures (j'inclue donc mes structures avec un #include "struc.h"

    - hosaflow.c qui fait appel aux fonctions écrites dans WorkOnXml.c . Il utilise par conséquent mon struc.h.

    J'aimerai compiler WorkOnXml.c de façon à avoir un WorkOnXml.o (pour avoir une espèce de librairie), puis compiler hosaflow qui utiliserait mon
    WorkOnXml.o. Est-ce possible ?

    Mon makefile ressemble pour l'instant à cela :
    CFLAGS_XML = `xml2-config --cflags --libs`
    CFLAGS = -W -Wtraditional -Wpointer-arith -fwritable-strings -O2
    CC = gcc

    TARGETS = hosaflow WorkOnXml.o
    all: ${TARGETS}

    hosaflow: WorkOnXml.o hosaflow.c struct.h
    @echo "***************** Compilation de HosaFlow ************************"
    ${CC} ${CFLAGS} WorkOnXml.o hosaflow.c -o hosaflow

    WorkOnXml.o: WorkOnXml.c
    @echo "***************** Compilation de scandir.o **********************"
    ${CC} ${CFLAGS_XML} ${CFLAGS_XML} -o WorkOnXml.o WorkOnXml.c


    Lorsque je compile hosaflow, il me retourne le message suivant :
    gcc -W -Wtraditional -Wpointer-arith -fwritable-strings -O2 WorkOnXml.o hosaflow.c -o hosaflow
    hosaflow.c: In function `main':
    hosaflow.c:23: warning: traditional C rejects ISO C style function definitions
    ld: fatal: file WorkOnXml.o: unknown file type
    ld: fatal: File processing errors. No output written to hosaflow
    collect2: ld returned 1 exit status
    make: *** [hosaflow] Error 1

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Par défaut
    A noter que dans mon hosaflow.c , j'ai la déclaration du prototype d'une des fonctions présentes dans le WorkOnXml.c

    extern struct tTransmission GetTransmission(char *id);

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par kendras
    A noter que dans mon hosaflow.c , j'ai la déclaration du prototype d'une des fonctions présentes dans le WorkOnXml.c

    extern struct tTransmission GetTransmission(char *id);
    En C++, ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tTransmission GetTransmission(char *id);

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Pour ta structure n°2, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    struct tTransmission{
    tSource source;
    };
    Le struct pour la variable n'est plus à mettre

    Ensuite, pour la ligne du GCC, c'est quoi "hosaflow" ? Ton futur programme ? Normalement, c'est aussi un .o, ensuite tu fais une édition des liens avec le tout, mais à la fin.
    Ensuite, c'est pas GCC qu'il faut appeler, mais G++.
    Pour l'erreur, on ne peut rien savoir, on a pas hosaflow.c, ou la ligne fautive !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/08/2013, 14h36
  2. BDD pour une nulle
    Par pepsibou dans le forum Débuter
    Réponses: 1
    Dernier message: 18/01/2009, 18h36
  3. Problème de compilation pour une DLL
    Par Faith's Fall dans le forum C++Builder
    Réponses: 8
    Dernier message: 24/03/2008, 15h40
  4. Réponses: 2
    Dernier message: 12/12/2006, 22h25
  5. [Compilation] A quel moment pour une application ?
    Par Rick1602 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/03/2004, 20h36

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