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 :

erreur de compilation bizarre


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 36
    Par défaut erreur de compilation bizarre
    bonjour
    je travaille actuellement sur un projet autour de nss mozilla en C
    j'ai installé sur ma machine de dev linux/debian 6.01 les packages nss et toutes les dépendances qu'il y a.

    voici le programme il est hyper simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include <nss.h>
    #include <pk11pub.h>
     
    int main(int argc, char *argv[])
    {
    NSS_NoDB_Init(NULL);
    }
    lorsque je lance la compile par la commande :

    gcc -g test.c -otest -I/usr/include/nss -I/usr/include/nspr

    j'ai un message d'erreur undefined reference to NSS_NoDB_Init
    si je supprime cette ligne du programme je n'ai aucune erreur !!!
    j'ai vérifier avec nss-config --libdir et nss-config --includedir c'est ok
    et la meme chose pour nspr

    j'avoue ne pas comprendre l'erreur
    si qqun à une idée

    Cdt

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 495
    Par défaut
    Les fichiers « *.h » contenus dans /usr/include ne sont pas les bibliothèques elles-mêmes, ce sont les fichiers qui expliquent à ton programme comment se servir des fonctions se trouvant dans les bibliothèques déjà compilées.

    Essaie « -lnss -lnspr », tout simplement.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 36
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Les fichiers « *.h » contenus dans /usr/include ne sont pas les bibliothèques elles-mêmes, ce sont les fichiers qui expliquent à ton programme comment se servir des fonctions se trouvant dans les bibliothèques déjà compilées.

    Essaie « -lnss -lnspr », tout simplement.
    ok mais j'ai essayé et cela ne fonctionne pas
    j'ai supprimé la ligne NSS_NoDB_Init et c'est ok avec ma ligne de commande pour la compilation
    je pense qu'il doit manquer une partie de la librairie ou un link ou un path au niveau du système
    Le pire dans l'histoire c'est que même l'exemple fournit par mozilla sur le site officiel ne fonctionne pas j'ai recensé 987 erreurs lors de la compilation ^^

    je vais essayer d'approfondir un peu l'install et la config je pense que cela vient de là, tous les fichiers sont présents, se sont des packages officiels stables que j'ai pris directement du site de débian
    il est possible aussi qu'il y a un problème dans les packages me reste plus qu'à pour ce cas , dl les sources et refaire un make

    merci en tous cas pour la rapidité de réponse

    CDt

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 495
    Par défaut
    Citation Envoyé par fainardi83 Voir le message
    ok mais j'ai essayé et cela ne fonctionne pas
    Mais encore ? Montre-nous ta nouvelle ligne de commande.

    j'ai supprimé la ligne NSS_NoDB_Init et c'est ok avec ma ligne de commande pour la compilation
    Évidemment, puisque tu supprimes la ligne qui provoque l'erreur. Mais tu n'as pas résolu le problème pour autant.

    je pense qu'il doit manquer une partie de la librairie ou un link ou un path au niveau du système
    Non. « undefined reference to », ça veut dire « référence indéfinie à ». Ça signifie que le compilateur voit que tu fais appel à une fonction que tu as déclarée (en fait, elle est déclarée dans le *.h, qui sert justement à ça) mais qui ne se trouve pas dans ton code (celle de ta lib). Le compilo se dit alors « pas de problème, ce doit être une lib, je laisse en blanc, l'éditeur de liens remplira les trous ». Et justement, à l'édition des liens, au moment de créer l'exécutable, tu ne spécifie pas la bonne bibliothèque. Le linker se retrouve donc avec des symboles externes qui ne correspondent toujours à rien, et il ne peut donc finaliser la construction de ton exécutable.

    C'est ultra-classique (et ce devrait être dans la F.A.Q.).

    Le pire dans l'histoire c'est que même l'exemple fournit par mozilla sur le site officiel ne fonctionne pas j'ai recensé 987 erreurs lors de la compilation ^^
    Ce sont de toute évidences des erreurs en cascade provoquées par le premier problème. Résous la première d'entre elles et les autres disparaîtront comme par magie.

    merci en tous cas pour la rapidité de réponse
    À ton service.

  5. #5
    Membre émérite
    Avatar de f-k-z
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2006
    Messages : 403
    Par défaut
    Yop,

    Pour information pk11pub.h dépend de libnss et la compilation se fait avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -g test.c -otest -I/usr/include/nss -I/usr/include/nspr -lnss3
    ++

    Fiki

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 36
    Par défaut
    Citation Envoyé par f-k-z Voir le message
    Yop,

    Pour information pk11pub.h dépend de libnss et la compilation se fait avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -g test.c -otest -I/usr/include/nss -I/usr/include/nspr -lnss3
    ++

    Fiki
    cool en plus ça marche pour de vrai,

    tx all

    ZeTaZ

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

Discussions similaires

  1. "Intellisence" et erreurs de compilation bizarres
    Par mister3957 dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 06/02/2010, 11h54
  2. erreure de compilation bizarre
    Par reptils dans le forum SL & STL
    Réponses: 1
    Dernier message: 03/02/2008, 06h26
  3. [DEV C++] Erreur de compilation bizarre
    Par Muesko dans le forum Dev-C++
    Réponses: 7
    Dernier message: 04/07/2007, 15h37
  4. Erreur de compilation bizarre !
    Par SuperWeight dans le forum MFC
    Réponses: 3
    Dernier message: 31/05/2007, 16h43
  5. Erreur de compilation bizarre
    Par Florian.L dans le forum C
    Réponses: 3
    Dernier message: 11/05/2007, 17h31

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