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 :

Probleme de compilation sous linux


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 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut Probleme de compilation sous linux
    Bonjour,
    j'ai créé un makefile mais j'ai un probleme pour compiler un groupe de fichier.
    Voici le makefile:
    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
     
     
    LDFLAGS= -lcv  -lhighgui -lstdc++ -lueye_api -lcxcore  -lcvaux
    SRC1 = $(wildcard src/*.cpp)
    OBJ1 = $(patsubst %.cpp, %.o, $(SRC1))
    SRC2 = $(wildcard src/*.c)
    OBJ2 = $(patsubst %.c, %.o, $(SRC2))
     
    all:    Prog clean
     
    Prog:      $(OBJ2) ${OBJ1}
    	g++ -c  $(OBJ2) ${OBJ1}    -o src/Prog $(LDFLAGS)
     
     
    %.o : %.cpp 
    	gcc -c  $<  -o $@ $(LDFLAGS)
    %.o : %.c
    	gcc -c $< -o $@ -W -Wall -ansi -pedantic
     
    clean:
    	rm  src/*.o
    Alors je vous explique, j'ai un programme principal main.cpp et j'ai un programme de traitement POV_SYSTEME.cpp qui lui utilise des fichiers .c.

    Il me dit cette erreur :
    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
    gcc -c src/fast_10.c -o src/fast_10.o -W -Wall -ansi -pedantic
    gcc -c src/fast_11.c -o src/fast_11.o -W -Wall -ansi -pedantic
    gcc -c src/fast_12.c -o src/fast_12.o -W -Wall -ansi -pedantic
    gcc -c src/fast_9.c -o src/fast_9.o -W -Wall -ansi -pedantic
    gcc -c src/fast.c -o src/fast.o -W -Wall -ansi -pedantic
    gcc -c src/nonmax.c -o src/nonmax.o -W -Wall -ansi -pedantic
    gcc -c  src/main.cpp  -o src/main.o -lcv  -lhighgui -lstdc++ -lueye_api -lcxcore  -lcvaux
    src/main.cpp:54: warning: ‘typedef’ was ignored in this declaration
    src/main.cpp: In function ‘int main(int, char**)’:
    src/main.cpp:83: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘double’
    src/main.cpp: In function ‘int InitDisplayMode()’:
    src/main.cpp:230: warning: NULL used in arithmetic
    gcc -c  src/POV_SYSTEME.cpp  -o src/POV_SYSTEME.o -lcv  -lhighgui -lstdc++ -lueye_api -lcxcore  -lcvaux
    g++ -c   src/fast_10.o  src/fast_11.o  src/fast_12.o  src/fast_9.o  src/fast.o  src/nonmax.o  src/main.o  src/POV_SYSTEME.o    -o src/Prog -lcv  -lhighgui -lstdc++ -lueye_api -lcxcore  -lcvaux
    g++: src/fast_10.o: linker input file unused because linking not done
    g++: src/fast_11.o: linker input file unused because linking not done
    g++: src/fast_12.o: linker input file unused because linking not done
    g++: src/fast_9.o: linker input file unused because linking not done
    g++: src/fast.o: linker input file unused because linking not done
    g++: src/nonmax.o: linker input file unused because linking not done
    g++: src/main.o: linker input file unused because linking not done
    g++: src/POV_SYSTEME.o: linker input file unused because linking not done
    rm  src/*.o
    Et ensuite à quoi sert la formule -W -Wall -ansi -pedantic, je l'ai testé, ... mais je ne sais pas trop à quoi elle sert.
    Quelqu'un pourrait m'aider?
    D'avance merci.

  2. #2
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 254
    Par défaut
    Toud d'abord, -W -Wall -ansi -pedantic sont des flag de compilation. Par defaut, gcc et g++ ne t'affiche pas toutes les erreurs de ton code, sulement une partie. En ajoutant ces flags, tu demande a ton compilateur de t'afficher plus d'erreur.

    Ensuite dans tes erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    src/main.cpp:83: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘double
    A priori t'as essaye (j'imagine sans code source c'est dur de savoir) de faire un printf en precisant %d sauf que tu luio a file un double au lieu d'un int.

    Pour le NULL, le warning est clair, tu as essaye d'utiliser NULL dans un operation arithmetique.

    Ensuite pour compiler tes sources cpp tu utilise gcc et non g++... Ce qui peut poser probleme.

    Apparemment le linkage ne s'est pas fait pour certains fichier ce qui veut dire qu'ils n'ont pas ete correctement compile. Pour compiler les sources C et CPP il existe deja des regles internes au Makefile exemple :Il y a quelques trucs que je trouve inhabituels dans ton Makefile mais n'estant pas non plus un expert en la matiere je ne m'avancerai pas plus.

    Petit conseil tout de meme. Evite d'utiliser des code que tu ne maitrise pas, car s'ils marchent tant mieux mais s'ils foirent (et c'est le cas) tu ne sera pas capable de comprendre d'ou vient le probleme et de trouver la solution.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 560
    Par défaut Re
    Ok merci.
    C'était bien un problème de link.

  4. #4
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Citation Envoyé par 6-MarViN Voir le message
    Toud d'abord, -W -Wall -ansi -pedantic sont des flag de compilation. Par defaut, gcc et g++ ne t'affiche pas toutes les erreurs de ton code, sulement une partie. En ajoutant ces flags, tu demande a ton compilateur de t'afficher plus d'erreur.
    <...>
    Je suppose que tu voulais dire warning ou avertissement et non erreur.

  5. #5
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 254
    Par défaut
    Certes mais je considere tout les warnings comme des erreurs. Theoriquement si ton code est bien fait il devrait meme pas y avoir de warning (c'est pour ca que je compile toujours avec -Werror)

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

Discussions similaires

  1. [SWT]Probleme lancement swt sous linux
    Par jujuz dans le forum SWT/JFace
    Réponses: 7
    Dernier message: 12/07/2007, 15h34
  2. erreur de compilation sous linux
    Par petdelascar dans le forum C
    Réponses: 11
    Dernier message: 21/12/2005, 20h10
  3. pb de compilation sous linux
    Par prsieux dans le forum Linux
    Réponses: 10
    Dernier message: 20/12/2005, 17h49
  4. [hibernate] probleme à la compilation sous eclipse
    Par ejaub dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/11/2005, 10h45
  5. [TP]Probleme de compilation sous TP7
    Par yffick dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 18/12/2003, 20h32

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