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 :

Undefined reference to


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par d�faut Undefined reference to
    Bonjour,
    je suis actuellement en train d'utiliser une librairie, la librairie lapack dans un de mes programmes.
    J'ai dans un premier temps install� cette fameuse librairie(liblapack.so) puis j'ai �crit le makefile suivant

    val_vec: val_vec.o
    g++ val_vec.o -L/usr/lib/ -llapack -lg2c -o val_vec

    val_vec.o: val_vec.cpp lapack.h
    g++ val_vec.cpp -c

    clean:
    rm*.o val_vec *~core

    Le probleme vient alors � la compilation ou j'obtiens le message suivant:

    g++ val_vec.o -L/usr/lib/ -llapack -lg2c -o val_vec
    val_vec.o: In function `resolution(int, float*, float*, float*)
    val_vec.cpptext+0x36b): undefined reference to `sstev(char, int, float*, float*, float*, int, float*, int)
    /usr/lib//liblapack.so: undefined reference to `_gfortran_st_write'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_pow_r8_i4'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_transfer_character'
    /usr/lib/libblas.so.3: undefined reference to `_gfortran_runtime_error'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_st_write_done'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_compare_string'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_pow_i4_i4'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_copy_string'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_transfer_integer'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_filename'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_stop_numeric'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_pow_r4_i4'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_ioparm'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_line'
    /usr/lib//liblapack.so: undefined reference to `_gfortran_concat_string'
    collect2: ld returned 1 exit status
    make: *** [val_vec] Erreur 1

    Quelqu'un saurait il comment resoudre ce probleme

    merci d'avance pour tout aide �ventuelle

  2. #2
    Membre confirm� Avatar de harsh
    Inscrit en
    F�vrier 2005
    Messages
    229
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2005
    Messages : 229
    Par d�faut
    Bonjour,

    Je n'ai pas encore utilis� la lib lapack mais je ne vois pas d'option -I ("i" majuscule, pour indiquer le chemin des includes, donc des .h de la lib) dans ton makefile, seulement -l et -L.

    Cela expliquerait que le compilo ne trouver pas les d�clarations des fonctions donn�es

  3. #3
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Tout faux, les d�clarations sont trouv�es.
    C'est � l'�dition de lien que �a foire.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre confirm� Avatar de harsh
    Inscrit en
    F�vrier 2005
    Messages
    229
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2005
    Messages : 229
    Par d�faut
    Voila un site sur lequel tu trouvera un makefile (� alleger dans ton cas). Il y pr�cise bien le chemin d'acces aux includes:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    INCLUDES        = -I/usr/local/include
    ...
    http://www.math.utah.edu/software/la...#linking-local

    EDIT: alors si c'est tout faux... (oui, effectievement, l'edition des liens)

  5. #5
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    A priori, il faut que tu lies avec la biblioth�que gfortran (libgfortran.a).

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 7
    Par d�faut de retour
    Bonjour,

    Sur le dernier conseil, j'ai install� et utilis� la librairie libgfortran ce qui a nettement reduit mes erreurs mais il y en a toujours une qui subsiste:

    mon makefile devient:

    val_vec: val_vec.o
    g++ val_vec.o -L/usr/lib/ -llapack -lgfortran -o val_vec

    val_vec.o: val_vec.cpp lapack.h
    g++ val_vec.cpp -c

    clean:
    rm*.o val_vec *~core

    Le contenu de mon fichier lapack.h est:

    void sstev (char jobz, int n, float*sdiag, float*soffd, float*sz, int ldz, float*work, int info);

    Et a la compilation, j'obtiens toujours:

    [root@localhost atomes]# make
    g++ val_vec.o -L/usr/lib/ -llapack -lgfortran -o val_vec
    val_vec.o: In function `resolution(int, float*, float*, float*)':
    val_vec.cpp.text+0x36b): undefined reference to `sstev(char, int, float*, float*, float*, int, float*, int)'
    collect2: ld returned 1 exit status
    make: *** [val_vec] Erreur 1

    Une petite derniere indication pour me permettre de boucler ce programme m'enleverait une grosse epine du pied.

    Merci a vous d'avance dans tous les cas

Discussions similaires

  1. winsock.h : undefined reference...
    Par abraxas dans le forum Dev-C++
    R�ponses: 14
    Dernier message: 06/08/2012, 13h42
  2. Undefined reference compilation r�seau
    Par Ren97 dans le forum Dev-C++
    R�ponses: 11
    Dernier message: 08/03/2005, 09h46
  3. Compilation de xmms : undefined reference to...
    Par Micha�l dans le forum Applications et environnements graphiques
    R�ponses: 4
    Dernier message: 04/02/2005, 19h05
  4. undefined reference to `xmlParseFile'
    Par Clemaster dans le forum Autres �diteurs
    R�ponses: 2
    Dernier message: 25/06/2004, 20h38
  5. g++ : undefined reference to ...
    Par le_barbu dans le forum Autres �diteurs
    R�ponses: 16
    Dernier message: 14/05/2004, 07h23

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