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

Langage C++ Discussion :

CMake, g++, linkage et undefined reference : problème


Sujet :

Langage C++

  1. #1
    Membre habitué
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Points : 176
    Points
    176
    Par défaut CMake, g++, linkage et undefined reference : problème
    Bonjour.

    Je suis face à un problème douteux dont la source m'est pour l'instant inconnue :
    /prog/lib/libprogQt.so: undefined reference to `double prog::int_pow<double>(double const&, int const&)'
    /prog/lib/libprogQt.so: undefined reference to `prog::Unit::getLengthScale(prog::Unit::LengthUnit const&)'
    Bon, le fait est que je viens de mettre à jour Ubuntu de 11.04 à 11.10 et beaucoup de choses en même temps ont changé sur mon système ce qui ne facilite pas les choses, entre autres :
    - update de g++
    - update de CMake
    - update de Qt

    Avant ça le logiciel sur lequel je travaille compilait parfaitement, mais maintenant, c'est le drame.

    La structure des dossiers et le système de compilation est le suivant (le nom de mon programme a ici été remplacé par prog) :
    Dossier racine de mon projet, où j'exécute CMake :
    /prog/

    Sources de mon programme, dans différents dossiers
    /prog/src/prog
    /prog/src/progQt

    Chacun des sous dossiers de /prog/src est compilé pour produire une bibliothèque du nom correspondant dans /prog/lib. J'obtiens donc :
    /prog/lib/libprog.so
    /prog/lib/libprogQt.so

    Enfin j'ai un répertoire /prog/app/ avec des applications qui sont compilées dans /prog/bin. L'application que j'essaye de compiler s'appelle GuiTest (les sources sont donc dans /prog/app/GuiTest) et fait appel aux librairies :
    /prog/lib/libprog.so
    /prog/lib/libprogQt.so
    Mon problème est que mes librairies compilent sans problème, mais l'application elle me génère le bug que j'ai mis au tout début du topic. Mais ce que je comprends encore moins c'est que "getLengthScale" n'est PAS utilisée dans "/prog/src/progQt" mais dans "prog/src/prog".

    J'ai plusieurs questions :
    1) Selon vous est-ce lié à la compilation des bibliothèques (tout se passe bien à ce moment là pourtant), à la compilation de l'application ou au linkage de l'application avec les bibliothèques ?
    2) Comment résoudre ce problème (où comment tenter d'en savoir plus sur son origine ?)

  2. #2
    Membre éprouvé Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Points : 997
    Points
    997
    Par défaut
    Bonsoir,
    Personnellement, ce genre de message me fait penser à une erreur de l'éditeur de liens.

    Il semble que ce soit toi qui définis les fonctions citées, donc je ne crois pas que Qt soit impliqué.
    Si tu n'as pas modifié tes fichiers entre temps, il n'y a aucune raison que le problème vienne du compilateur.

    Alors je ne vois qu'une seule possibilité : l'éditeur de liens n'a pas les bonnes informations (chemins, fichiers) pour créer tes bibliothèques ; autrement dit, la ligne de commande qui fait appel à l'éditeur de liens est erronée.
    Cette ligne de commande provient du makefile, qui lui-même vient de cmake.
    Je ne connais pas bien son fonctionnement, mais je serais d'avis de commencer par là.

    Peut-être le fichier de configuration a-t-il été modifié à ton insu, ou alors il n'est plus analysé de la même manière (peu probable, cependant...).

    Encore une fois, ça reste un avis, et sous réserve que tu n'as pas modifié tes fichiers entre temps.
    Bon courage.

Discussions similaires

  1. Linkage dynamique. (undefined references)
    Par Invité dans le forum C++
    Réponses: 1
    Dernier message: 05/01/2015, 01h07
  2. problème de compilation "undefined reference to"
    Par grabriel dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 05/05/2008, 12h08
  3. Toujours des problème de "undefined reference to"
    Par Verbalinsurection dans le forum C++
    Réponses: 12
    Dernier message: 12/10/2007, 01h38
  4. Réponses: 0
    Dernier message: 24/09/2007, 15h57
  5. Problème de linkage mingw32 undefined reference
    Par nek_kro_kvlt dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/06/2007, 13h46

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