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

Bibliothèque standard C Discussion :

GCC Problème d 'édition de liens avec fonction mathématique (log)


Sujet :

Bibliothèque standard C

  1. #1
    Membre à l'essai
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Avril 2010
    Messages : 15
    Points : 15
    Points
    15
    Par défaut GCC Problème d 'édition de liens avec fonction mathématique (log)
    Bonjour,

    J'ai un projet sous Code::Blocks qui compilait et faisait une édition de liens sans problème sur un Raspi 2.
    Je viens de reprendre ce projet sur un Odroid N2 sous Armbian Ubuntu Focal et lors de l'édition de lien je me fait jeté sur la librairie libm....

    cc -Wall -fno-strict-aliasing -g -DBIG_JOINS=1 -g -I../../../Lib/Meteo/open2300/include -I/usr/include/mysql -c /home/oi/dev/Dev/open2300/Appli/Meteo/suivimeteo/suivimeteo.c -o obj/Debug/suivimeteo.o
    gcc -L/usr/lib/arm-linux-gnueabihf -o bin/Debug/SuiviMeteo obj/Debug/suivimeteo.o -lz -lm -ldl -lm -lmysqlclient -lpthread ../../../Lib/Meteo/open2300/bin/Debug/libopen2300.a
    /bin/ld: ../../../Lib/Meteo/open2300/bin/Debug/libopen2300.a(rw2300.o): undefined reference to symbol 'log@@GLIBC_2.29'
    /bin/ld*: /usr/lib/gcc/aarch64-linux-gnu/9/../../../aarch64-linux-gnu/libm.so*: erreur lors de l'ajout de symboles*: DSO missing from command line
    collect2: error: ld returned 1 exit status
    J'ai rajouté un -lm, il y a en donc 2 dans l'édition de liens mais cela ne change rien...

    J'ai regardé sur internet mais je n'ai pas trouvé de réponses qui semblaient résoudre ce problème basique...

    Quelqu'un aurait-il une idée ?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 387
    Points
    9 387
    Par défaut
    Généralement c'est une question d'ordre des librairies du linker.
    Voire dans le pire des cas de dépendances circulaire auquel cas il est nécessaire de répéter la librairie après celle concernée.

    Exemple (b dépend de c et c dépend de b):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc x.o y.o z.o -la -lb -lc -lb
    J'ai rajouté un -lm, il y a en donc 2 dans l'édition de liens mais cela ne change rien...
    Si c'est lié à une référence circulaire il ne suffit pas de la rajouter n'importe où ailleurs dans la ligne de commande.

  3. #3
    Membre à l'essai
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Avril 2010
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Merci de ta réponse transgohan.

    Pour l'ordre, ma demande est assez simple, j'espère que cela ne pose pas de problème au gcc.
    J'ai un lib qui utilise pow et log donc la la lib math que je compile avec ces lignes
    gcc -DRASPI -Wall -g -Iinclude -c /home/oi/dev/Dev/open2300/Lib/Meteo/open2300/src/linux2300.c -o obj/Debug/src/linux2300.o
    gcc -DRASPI -Wall -g -Iinclude -c /home/oi/dev/Dev/open2300/Lib/Meteo/open2300/src/rw2300.c -o obj/Debug/src/rw2300.o
    rm -f bin/Debug/libopen2300.a
    ar -r -s bin/Debug/libopen2300.a obj/Debug/src/linux2300.o obj/Debug/src/rw2300.o
    Ensuite je compile mon programme avec ces lignes (sans mysql)
    gcc -Wall -g -I../../../Lib/Meteo/open2300/include -c /home/oi/dev/Dev/open2300/Appli/Meteo/histlog2300/histlog2300.c -o obj/Debug/histlog2300.o
    gcc -o bin/Debug/histlog2300 obj/Debug/histlog2300.o -lm ../../../Lib/Meteo/open2300/bin/Debug/libopen2300.a
    Je n'y vois pas grand problème...

    Je progresse tout de même, en fait j'ai 2 types d'erreurs.
    • un avec Mysql qui est bien log@@GLIBC_2.29,
    • l'autre sans Mysql qui est
      référence indéfinie vers «*pow*»
      et
      référence indéfinie vers « log »


    Question : comment être sûr que la version de la bibliothèque est la bonne ? Comment vérifier le log@@GLIBC_2.29 ? N'y aurait-il pas une autre version installée ce qui fait qu'il ne trouverai pas la V2.29 ?

    PS : J'ai repris le même projet sur un Raspi4 et je n'ai eu aucun problème, comme lorsque j'avais fait ce petit programme sous Raspi2....
    Le problème vient donc bien de l'installation du N2....

Discussions similaires

  1. Problème d'édition des liens avec GCC
    Par uriotcea dans le forum Débuter
    Réponses: 2
    Dernier message: 06/06/2011, 11h17
  2. Réponses: 2
    Dernier message: 01/03/2011, 16h11
  3. Problème d'édition des liens avec VC6
    Par nina_geej dans le forum wxWidgets
    Réponses: 11
    Dernier message: 18/03/2009, 16h34
  4. Problème à l'édition des liens avec wxPlotCtrl
    Par _MattU_ dans le forum wxWidgets
    Réponses: 2
    Dernier message: 12/03/2009, 08h40
  5. Problème à l'édition des liens avec BCC55 et Xerces
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/11/2003, 14h50

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