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

Systèmes de compilation Discussion :

[CMAKE] undefined reference to


Sujet :

Systèmes de compilation

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [CMAKE] undefined reference to
    Bonjour,

    Lors de que je lance le Makefile qui est généré par l’outil CMAKE la compilation de mon exécutable s’arrête et m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    [  5%] Building CXX object commun/configuration/src/config/CMakeFiles/COMMUN_blaConfig.dir/blaConfig.cpp.o
    Linking CXX shared library libCOMMUN_blaConfig.so
    [  5%] Built target COMMUN_blaConfig
    [ 11%] Building C object commun/configuration/src/xml_tags/CMakeFiles/COMMUN_XML_TAGS.dir/config_tags.c.o
    Linking C shared library libCOMMUN_XML_TAGS.so
    [ 11%] Built target COMMUN_XML_TAGS
    [ 16%] Building CXX object commun/transcode/src/CMakeFiles/COMMUN_Trancecode.dir/transcode.cpp.o
    Linking CXX shared library libCOMMUN_Trancecode.so
    [ 16%] Built target COMMUN_Trancecode
    [ 22%] Building C object commun/divers/CMakeFiles/COMMUN_FGETS2.dir/src/fgets2.c.o
    Linking C shared library libCOMMUN_FGETS2.so
    [ 22%] Built target COMMUN_FGETS2
    [ 27%] Building CXX object commun/chiffrement/src/CMakeFiles/COMMUN_CHFT_FEDEKEY.dir/fedekey.cpp.o
    Linking CXX shared library libCOMMUN_CHFT_FEDEKEY.so
    [ 27%] Built target COMMUN_CHFT_FEDEKEY
    [ 33%] Building CXX object chft_outils_dechiffrement/metier/CMakeFiles/BLA_CHFT_MET_OBJ.dir/chft_op_cpp.cpp.o
    [ 38%] Building CXX object chft_outils_dechiffrement/metier/CMakeFiles/BLA_CHFT_MET_OBJ.dir/BLAChftCharg.cpp.o
    [ 44%] Building CXX object chft_outils_dechiffrement/metier/CMakeFiles/BLA_CHFT_MET_OBJ.dir/blaChftKLect.cpp.o
    Linking CXX shared library libbla_CHFT_MET_OBJ.so
    [ 44%] Built target bla_CHFT_MET_OBJ
    [ 50%] Building C object chft_outils_dechiffrement/metier/CMakeFiles/bla_CHFT_OP_OBJ.dir/chft_operations.c.o
    Linking C shared library libbla_CHFT_OP_OBJ.so
    [ 50%] Built target bla_CHFT_OP_OBJ
    [ 55%] Building C object chft_outils_dechiffrement/metier/ncipher/CMakeFiles/DCHFT_METIER_NCIPHER.dir/chft_ncipher_op.c.o
    [ 61%] Building C object chft_outils_dechiffrement/metier/ncipher/CMakeFiles/DCHFT_METIER_NCIPHER.dir/simplebignum.c.o
    Linking C shared library libDCHFT_METIER_NCIPHER.so
    [ 61%] Built target DCHFT_METIER_NCIPHER
    [ 66%] Building C object chft_outils_dechiffrement/metier/openssl/CMakeFiles/DCHFT_METIER_OSSL.dir/chft_openssl_op.c.o
    Linking C shared library libDCHFT_METIER_OSSL.so
    [ 66%] Built target DCHFT_METIER_OSSL
    [ 72%] Building C object chft_outils_dechiffrement/commun/CMakeFiles/bla_CHFT_COMMON_OBJ.dir/chft_consts.c.o
    Linking C shared library libbla_CHFT_COMMON_OBJ.so
    [ 72%] Built target bla_CHFT_COMMON_OBJ
    [ 77%] Building CXX object chft_outils_dechiffrement/api/CMakeFiles/bla_CHFT_API_OBJ.dir/chft_init.cpp.o
    [ 83%] Building CXX object chft_outils_dechiffrement/api/CMakeFiles/bla_CHFT_API_OBJ.dir/chft_op.cpp.o
    Linking CXX shared library libbla_CHFT_API_OBJ.so
    [ 83%] Built target bla_CHFT_API_OBJ
    [ 88%] Building CXX object chft_outils_dechiffrement/test/CMakeFiles/testInit.dir/main.cpp.o
    Linking CXX executable bin/testInit
    CMakeFiles/testInit.dir/main.cpp.o(.text+0x2e8): In function `main':
    : undefined reference to `init_CHFTLib(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, blaLogger*)'
    CMakeFiles/testInit.dir/main.cpp.o(.text+0x593): In function `main':
    : undefined reference to `cryptFederationKey(unsigned long, unsigned long, blaLogger*)'
    collect2: ld a retourné 1 code d'état d'exécution
    make[2]: *** [chft_outils_dechiffrement/test/bin/testInit] Erreur 1
    make[1]: *** [chft_outils_dechiffrement/test/CMakeFiles/testInit.dir/all] Erreur 2
    mon fichier CMakeLists est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    cmake_minimum_required(VERSION 2.8)
     
    #Déclaration du projet
    project(bla)
    set(EXECUTABLE_OUTPUT_PATH bin/${CMAKE_BUILD_TYPE}) 
     
     
    add_executable(
        ${MAINTEST}
        main.cpp
    )
     
    include_directories(${CMAKE_BINARY_DIR})
     
     
     
    #Configuration de l'édition de liens
    target_link_libraries(
    ${MAINTEST}
    ${LIB_FOR_MAIN}
    )
    target_link_libraries(
    ${MAINTEST}
    ${LIBS})
     
     
    add_definitions(
    ${CPLUS_FLAGS}
    $(CFLAGS_OPTIONS)
    )
    add_definitions(${GCC4_COMMON_FLAGS}  ${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS})
     
     
    include_directories(
    ${BLA_CHFT_API_DIR}
    ${BLA_CHFT_COMMON_DIR}
    "${HOME}/bla/dev/commun/configuration/src/config"
    "${HOME}/bla/dev/commun/traces/src/gestLog"
    "${HOME}/apache/include"
    "${HOME}/bla/dev/commun/include"
    "${HOME}/bla/dev/commun/chiffrement/src")
    j'ai l'impression que il n'arrive pas a faire le lien avec les lib qu'il sont compilé juste avant ou avec les include
    auriez vous une idée d'ou cela pourrais venir?

    merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Je ne suis pas sûr mais je ne mets jamais deux target_link_librairies pour une même target. Est-ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    target_link_libraries(
    ${MAINTEST}
    ${LIB_FOR_MAIN}
    ${LIBS})
    améliore les choses ?

    Sinon, est-ce que les fonctions init_CHFTLib(std::string, blaLogger*) et cryptFederationKey(unsigned long, unsigned long, blaLogger*) sont bien définies ? Si oui, est-ce que les sources les contenant sont bien compilées dans une librairie ? Enfin, as-tu vérifié le contenu de LIB_FOR_MAIN et LIBS ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Oui autant pour moi je suis repassé avec une lib un link mais j'ai toujours la même erreurs. Oui, les méthodes sont bien compilé dans les libs defini avant.

    j'ai l'impression qu'il n'arrive pas a récupéré les libs que j'ai compilé a d'autres endroit du projet. comme si elle n'existais pas. elle quel sont bien présente dans les dossier correspondent.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Si tu ne définis pas LIB_FOR_MAIN ou LIBS dans un Makefile parent, ça ne marchera pas, à moins que tu utilises PARENT_SCOPE.

    Par contre, tu peux utiliser directement le nom des librairies où tu veux, au lieu de passer par une variable. N'oublie pas aussi la transitivité : si tu dis qu'une librairie A est linkée contre une librairie B, quand tu linkeras ton exécutable contre A, il sera aussi linké contre B.

Discussions similaires

  1. winsock.h : undefined reference...
    Par abraxas dans le forum Dev-C++
    Réponses: 14
    Dernier message: 06/08/2012, 14h42
  2. Réponses: 1
    Dernier message: 31/10/2011, 20h26
  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, 20h05
  4. undefined reference to `xmlParseFile'
    Par Clemaster dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 25/06/2004, 21h38
  5. g++ : undefined reference to ...
    Par le_barbu dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 14/05/2004, 08h23

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