Partage
  • Partager sur Facebook
  • Partager sur Twitter

petite aide pour boost 1.35

    24 juin 2008 à 12:12:39

    voila quelle sont les option à passer a gcc(g++) pour pouvoir compilers des projet fais avec boost 1.35.
    je suis en train d'essayer de compiler ce code source.

    Citation : code c++

    #include <iostream>
    #include <boost/asio.hpp>
    #include <boost/date_time/posix_time/posix_time.hpp>
    
    int main()
    {
      boost::asio::io_service io;
    
      boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
      t.wait();
    
      std::cout << "Hello, world!\n";
    
      return 0;
    }
    

    j'ai essayé avec la commande qui est donné dans la doc:
    g++ -I /usr/local/include/boost_1.35 test.cpp -o test
    et voila les erreurs que j'ai/

    Citation : erreurs

    /tmp/ccjqMCKn.o: In function `__static_initialization_and_destruction_0(int, int)':
    asio1.cpp:(.text+0x21a): undefined reference to `boost::system::get_system_category()'
    asio1.cpp:(.text+0x224): undefined reference to `boost::system::get_posix_category()'
    asio1.cpp:(.text+0x22e): undefined reference to `boost::system::get_posix_category()'
    asio1.cpp:(.text+0x238): undefined reference to `boost::system::get_system_category()'
    /tmp/ccjqMCKn.o: In function `boost::asio::error::get_system_category()':
    asio1.cpp:(.text._ZN5boost4asio5error19get_system_categoryEv[boost::asio::error::get_system_category()]+0x7): undefined reference to `boost::system::get_system_category()'
    /tmp/ccjqMCKn.o: In function `boost::system::error_code::error_code()':
    asio1.cpp:(.text._ZN5boost6system10error_codeC1Ev[boost::system::error_code::error_code()]+0x10): undefined reference to `boost::system::get_system_category()'
    /tmp/ccjqMCKn.o: In function `boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false> > >::context>::posix_tss_ptr()':
    asio1.cpp:(.text._ZN5boost4asio6detail13posix_tss_ptrINS1_10call_stackINS1_15task_io_serviceINS1_13epoll_reactorILb0EEEEEE7contextEEC2Ev[boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false> > >::context>::posix_tss_ptr()]+0x21): undefined reference to `pthread_key_create'
    /tmp/ccjqMCKn.o: In function `boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false> > >::context>::~posix_tss_ptr()':
    asio1.cpp:(.text._ZN5boost4asio6detail13posix_tss_ptrINS1_10call_stackINS1_15task_io_serviceINS1_13epoll_reactorILb0EEEEEE7contextEED2Ev[boost::asio::detail::posix_tss_ptr<boost::asio::detail::call_stack<boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false> > >::context>::~posix_tss_ptr()]+0xf): undefined reference to `pthread_key_delete'
    /tmp/ccjqMCKn.o: In function `boost::asio::detail::posix_thread::join()':
    asio1.cpp:(.text._ZN5boost4asio6detail12posix_thread4joinEv[boost::asio::detail::posix_thread::join()]+0x25): undefined reference to `pthread_join'
    /tmp/ccjqMCKn.o: In function `boost::asio::detail::posix_thread::~posix_thread()':
    asio1.cpp:(.text._ZN5boost4asio6detail12posix_threadD1Ev[boost::asio::detail::posix_thread::~posix_thread()]+0x1d): undefined reference to `pthread_detach'
    collect2: ld a retourné 1 code d'état d'exécution



    je rappelle que j'ai compiler boost et qu'elle se trouve dans le repertoire /usr/include/boost_1.35(sous linux)
    et sous windows aussi sous C:\boost_1.35\ donc si quelqu'un pouvait m'aider.
    merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2008 à 12:50:11

      Là tu as dit au compilo où trouver les bibliothèques de boost, mais tu ne lui as pas dit de lier avec boost.asio.
      • Partager sur Facebook
      • Partager sur Twitter
        24 juin 2008 à 12:56:16

        merci de l'info et s'il te plait comment faut faire pour lier avec boost asio (je connais pas tres bien gcc)et un ptit nouveau koi.et puis j'aimerai aussi savoir comment on fait avec le compilo d'intel svp.merci d'avoir rependu aussi rapidement
        • Partager sur Facebook
        • Partager sur Twitter
          24 juin 2008 à 13:15:56

          Pour lier une bibliothèque nommée libxxx.so, il faut passer l'option de compilation "-lxxx" (c'est un L minuscule, pas un 1).

          Je ne connais pas le nom exact de la bibliothèque pour boost.asio, mais tu devrais facilement le trouver en regardant dans le tutoriel ou dans ton répertoire /usr/lib.
          • Partager sur Facebook
          • Partager sur Twitter
            24 juin 2008 à 13:20:15

            merci bcp pour t'a reponse sinon pour le compilo d'intel personne ne sait comment faire ?
            et puis au fait je vien de chercher dans le repertoire ou se trouve asio et il n'y a aucun .so juste des entete (.hpp)
            et puis je pense que' c'est boost system qu'il faut linker elle se trouve dans /usr/local/lib/libboost_system-gcc42-mt-1_35.so
            mais quand je passe l'option -l libboost_system-gcc42-mt-1_35.so
            ou meme avec le chemin complet donc /usr/local/lib/libboost_system-gcc42-mt-1_35.so.
            j'ai cette erreur
            cannot find -llibboost_system-gcc42-mt-1_35.so
            cannot find -l/usr/local/lib/libboost_system-gcc42-mt-1_35.so
            respectivement et voila les commandes que je passe:
            g++ -I /usr/local/include/boost-1_35/ -l libboost_system-gcc42-mt-1_35.so asio1.cpp -o test
            g++ -I /usr/local/include/boost-1_35/ -l /usr/local/lib/libboost_system-gcc42-mt-1_35.so asio1.cpp -o test

            donc si tu pouvais m'eclairer un peu plus sa ne serai pas de refus merci.
            • Partager sur Facebook
            • Partager sur Twitter
              24 juin 2008 à 14:55:15

              As-tu vraiment lu mon dernier message ?

              Citation : Pas de titre

              Pour lier une bibliothèque nommée libxxx.so, il faut passer l'option de compilation "-lxxx" (<-- là y a ni le "lib" ni le ".so")



              Citation : Pas de titre

              tu devrais facilement le trouver en regardant dans le tutoriel ou dans ton répertoire /usr/lib (<-- là j'ai pas dit "/usr/include")


              Bon, ça peut aussi être /usr/local/lib, ça ça dépend de tes options d'installation.

              Bon bref, je suis allé voir sur le site de boost :

              Citation : Pas de titre

              asio consists only of header files, and so there is no need to build any libraries before using asio in your own applications


              En gros tu n'as pas de bibliothèque pour boost.asio, par contre tu as certainement des dépendances à lier (pthread, boost.system, ...). Comme tu ne les connais pas, il y a certainement un script à utiliser qui le fait pour toi, donc relis la doc ça doit être écrit quelque part. Au pire télécharge les exemple (si tu ne les as pas encore) et regarde les makefiles.
              • Partager sur Facebook
              • Partager sur Twitter
                24 juin 2008 à 15:28:28

                je voudrai m'excuser car je me suis mal exprimé en fait je savais que asio est sous forme de headers qui se trouvent chez moi dans /usr/local/include/boost.
                quand au lib elle sont dans /usr/local/lib
                je me suis juste mal exprimé car j'avais cherché dans le deux repertoires mais sinon bonne idée pour les example je vais essayer merci

                voila 15h14:
                j'ai regler les dependances :
                g++ -I /usr/local/include/boost-1_35/ -I /usr/local/lib/ -lboost_thread-gcc42-mt-1_35 -lboost_system-gcc42-mt-1_35 asio1.cpp
                mais le truc c'est que le a.out que j'ai ne veut pas s'executer meme apres le chmod +x a.out
                voila l'erreur bash que j'ai:
                bash: ./test1: Permission non accordée.
                Ps : je sais j'y vais pas mollo avec les question et je m'en excuse mais le fait est que j'ai pas touché réelement a un pc depuis bientot 6 mois et que je suis completement roullé.donc merci de votre compréhension.et merci de votre aide
                • Partager sur Facebook
                • Partager sur Twitter

                petite aide pour boost 1.35

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown