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 :

Problème de linkage avec libGL.so


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Points : 16
    Points
    16
    Par défaut Problème de linkage avec libGL.so
    Bonjour,

    J'essaie de compiler un projet d'une quarantaine de fichiers sources sur Ubuntu 11.10 (64 bits).
    Les fichiers compilent bien mais lors du linkage j'obtiens une erreur à cause de libGL.so.

    Ligne de commande de linkage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    g++ -o tracker -L. -L/usr/lib/x86_64-linux-gnu -lm -lgsl -lblas -lGLU -lglut -lGL -L/usr/local/lib64 -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lncurses -lOpenCL -lkdtree 
    obj/release/edge_tracker/main.o obj/release/edge_tracker/video_thread.o obj/release/edge_tracker/edge_tracker.o obj/release/edge_tracker/surf_thread.o obj/release/edge_tracker/video_tracker_thread.o obj/release/edge_tracker/particle_filter.o obj/release/edge_tracker/inertial_tracker_thread.o obj/release/edge_tracker/particle.o obj/release/edge_tracker/mag_grav_orient.o obj/release/edge_tracker/gl_widget.o obj/release/edge_tracker/gl_canvas.o obj/release/edge_tracker/main_window.o obj/release/edge_tracker/window.o obj/release/edge_tracker/image_processing.o obj/release/edge_tracker/edge_point_matches.o obj/release/edge_tracker/me_masks.o obj/release/edge_tracker/camera.o obj/release/edge_tracker/map_point.o obj/release/edge_tracker/ipt_view.o obj/release/edge_tracker/ipt_map.o obj/release/edge_tracker/ipt_tracker.o obj/release/munkres/munkres.o obj/release/geometry/Mesh.o obj/release/geometry/Quad.o obj/release/geometry/Triangle.o obj/release/geometry/Vertex.o obj/release/geometry/Object.o obj/release/geometry/KDTree.o obj/release/geometry/Ray.o obj/release/geometry/IntersectData.o obj/release/geometry/BoundingBox.o obj/release/geometry/Scene.o obj/release/xsens/example_linux.o obj/release/cl_surf/clutils.o obj/release/cl_surf/eventlist.o obj/release/cl_surf/utils.o obj/release/cl_surf/surf.o obj/release/cl_surf/fasthessian.o obj/release/cl_surf/cvutils.o obj/release/cl_surf/responselayer.o obj/release/edge_tracker/moc_video_thread.o obj/release/edge_tracker/moc_surf_thread.o obj/release/edge_tracker/moc_video_tracker_thread.o obj/release/edge_tracker/moc_inertial_tracker_thread.o obj/release/edge_tracker/moc_gl_widget.o obj/release/edge_tracker/moc_gl_canvas.o obj/release/edge_tracker/moc_main_window.o obj/release/edge_tracker/moc_window.o 
    libcmt.a -lQtOpenGL -lQtGui -lQtXml -lQtCore
    Voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /usr/bin/ld: obj/release/edge_tracker/edge_tracker.o: undefined reference to symbol 'glDepthFunc'
    /usr/bin/ld: note: 'glDepthFunc' is defined in DSO /usr/lib/x86_64-linux-gnu/libGL.so so try adding it to the linker command line
    /usr/lib/x86_64-linux-gnu/libGL.so: could not read symbols: Invalid operation
    collect2: ld returned 1 exit status
    scons: *** [tracker] Error 1
    scons: building terminated because of errors.
    Pourtant dans la ligne de commande j'ai bien : -L/usr/lib/x86_64-linux-gnu et -lGLU -lglut -lGL

    lorsque je tape la commande : locate libGL.so j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /usr/lib/fglrx/libGL.so
    /usr/lib/fglrx/libGL.so.1
    /usr/lib/fglrx/libGL.so.1.2
    /usr/lib/x86_64-linux-gnu/libGL.so
    /usr/lib/x86_64-linux-gnu/mesa/libGL.so
    /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
    /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2
    /usr/lib32/fglrx/libGL.so.1
    /usr/lib32/fglrx/libGL.so.1.2
    j'ai également fait un export de /usr/lib/x86_64-linux-gnu dans les variables LDFLAGS et LD_LIBRARY_PATH

    J'ai bien installé les paquets : fglrx-amdcccle-updates, fglrx-updates, fglrx-updates-dev, libgl1-mesa-dev, libglu1-mesa, libglu1-mesa -dev, libgl1-mesa-glx, libqt4-opengl, libqt4-opengl-dev, pyhton-opengl

    D'où vient cette erreur de linkage ?

    Bonne journée,

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Salut,
    As-tu essayé de mettre les '-L' et '-l' après les ".o"?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    Merci pour ta réponse.

    Alors j'ai essayé ça : (j'ai mis les .o au début)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -o tracker obj/release/edge_tracker/main.o obj/release/edge_tracker/video_thread.o obj/release/edge_tracker/edge_tracker.o obj/release/edge_tracker/surf_thread.o obj/release/edge_tracker/video_tracker_thread.o obj/release/edge_tracker/particle_filter.o obj/release/edge_tracker/inertial_tracker_thread.o obj/release/edge_tracker/particle.o obj/release/edge_tracker/mag_grav_orient.o obj/release/edge_tracker/gl_widget.o obj/release/edge_tracker/gl_canvas.o obj/release/edge_tracker/main_window.o obj/release/edge_tracker/window.o obj/release/edge_tracker/image_processing.o obj/release/edge_tracker/edge_point_matches.o obj/release/edge_tracker/me_masks.o obj/release/edge_tracker/camera.o obj/release/edge_tracker/map_point.o obj/release/edge_tracker/ipt_view.o obj/release/edge_tracker/ipt_map.o obj/release/edge_tracker/ipt_tracker.o obj/release/munkres/munkres.o obj/release/geometry/Mesh.o obj/release/geometry/Quad.o obj/release/geometry/Triangle.o obj/release/geometry/Vertex.o obj/release/geometry/Object.o obj/release/geometry/KDTree.o obj/release/geometry/Ray.o obj/release/geometry/IntersectData.o obj/release/geometry/BoundingBox.o obj/release/geometry/Scene.o obj/release/xsens/example_linux.o obj/release/cl_surf/clutils.o obj/release/cl_surf/eventlist.o obj/release/cl_surf/utils.o obj/release/cl_surf/surf.o obj/release/cl_surf/fasthessian.o obj/release/cl_surf/cvutils.o obj/release/cl_surf/responselayer.o obj/release/edge_tracker/moc_video_thread.o obj/release/edge_tracker/moc_surf_thread.o obj/release/edge_tracker/moc_video_tracker_thread.o obj/release/edge_tracker/moc_inertial_tracker_thread.o obj/release/edge_tracker/moc_gl_widget.o obj/release/edge_tracker/moc_gl_canvas.o obj/release/edge_tracker/moc_main_window.o obj/release/edge_tracker/moc_window.o libcmt.a -lQtOpenGL -lQtGui -lQtXml -lQtCore -L. -L/usr/lib/x86_64-linux-gnu -lm -lgsl -lblas -lGLU -lglut -lGL -L/usr/local/lib64 -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lncurses -lOpenCL -lkdtree
    et j'obtiens cette fois-ci cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /usr/bin/ld: obj/release/edge_tracker/main.o: undefined reference to symbol 'XInitThreads'
    /usr/bin/ld: note: 'XInitThreads' is defined in DSO /usr/lib/x86_64-linux-gnu/libX11.so.6 so try adding it to the linker command line
    /usr/lib/x86_64-linux-gnu/libX11.so.6: could not read symbols: Invalid operation
    collect2: ld returned 1 exit status
    j'ai donc rajouté -lX11 et maintenant ça marche ! Merci beaucoup

    Cela reste quand même assez mystèrieux pour moi le fait de devoir mettre les .o au début et les -L -l après ! mais bon ça marche

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Points : 16
    Points
    16
    Par défaut
    La compilation fonctionne mais à l'exécution de "tracker" j'obtiens une erreur OpenCL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ./tracker 
    OpenCL Error: -1001 (null) Getting platform IDs
    Je n'ai rien trouvé sur internet à propos de cette erreur. Est ce que quelqu'un aurait une idée ?

    Bonne journée,

    Merci

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

Discussions similaires

  1. Problème de linkage avec mysql
    Par grollum dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 13/03/2008, 21h10
  2. Problème de linkage avec template
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 05/01/2008, 16h34
  3. Problème de linkage avec g++
    Par GarulfoLinux dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 08/08/2007, 19h57
  4. Problème au linkage avec mfc42d
    Par GLDavid dans le forum VC++ .NET
    Réponses: 6
    Dernier message: 04/01/2007, 11h32
  5. Problème de linkage avec la librairie DevIl
    Par Drannor dans le forum DevIL
    Réponses: 1
    Dernier message: 18/01/2006, 23h05

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