Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/02/2007, à 18:01

Magic Banana

Impossible d'utiliser libboost-program-options-dev sous Ubuntu ?

Bonsoir !

Cela fait des heures que j'essaie d'utiliser libboost-program-options-dev (installé avec apt-get) mais j'ai des erreurs au linkage (que ce soit en utilisant g++ ou gcc). À bout, je décide de tenter la compilation du fichier en exemple le plus simple : /usr/share/doc/libboost-doc/examples/libs/program_options/example/first.cpp. Mêmes erreurs ! mad

J'en arrive donc à me demander si ce paquet n'est plus utilisable sur Edgy. roll

Voilà les erreurs obtenus lors de la compilation de first.cpp :

$ g++ first.cpp 
/tmp/cc7SFuit.o: In function `main':
first.cpp:(.text+0xdd): référence indéfinie vers « boost::program_options::options_description::options_description(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)»
first.cpp:(.text+0x188): référence indéfinie vers « boost::program_options::options_description::add_options()     »
first.cpp:(.text+0x1af): référence indéfinie vers « boost::program_options::options_description_easy_init::operator()(char const*, char const*)»
first.cpp:(.text+0x1d1): référence indéfinie vers « boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)»
first.cpp:(.text+0x1df): référence indéfinie vers « boost::program_options::variables_map::variables_map()»
first.cpp:(.text+0x244): référence indéfinie vers « boost::program_options::store(boost::program_options::basic_parsed_options<char> const&, boost::program_options::variables_map&, bool)»
first.cpp:(.text+0x2d1): référence indéfinie vers « boost::program_options::notify(boost::program_options::variables_map&)»
first.cpp:(.text+0x3b2): référence indéfinie vers « boost::program_options::operator<<(std::basic_ostream<char, std::char_traits<char> >&, boost::program_options::options_description const&)»
/tmp/cc7SFuit.o: In function `boost::program_options::value_semantic_codecvt_helper<char>::value_semantic_codecvt_helper()':
first.cpp:(.text._ZN5boost15program_options29value_semantic_codecvt_helperIcEC2Ev[boost::program_options::value_semantic_codecvt_helper<char>::value_semantic_codecvt_helper()]+0x12): référence indéfinie vers « vtable for boost::program_options::value_semantic_codecvt_helper<char>»
/tmp/cc7SFuit.o: In function `boost::program_options::value_semantic_codecvt_helper<char>::~value_semantic_codecvt_helper()':
first.cpp:(.text._ZN5boost15program_options29value_semantic_codecvt_helperIcED2Ev[boost::program_options::value_semantic_codecvt_helper<char>::~value_semantic_codecvt_helper()]+0x7): référence indéfinie vers « vtable for boost::program_options::value_semantic_codecvt_helper<char>»
/tmp/cc7SFuit.o: In function `boost::program_options::variables_map::~variables_map()':
first.cpp:(.text._ZN5boost15program_options13variables_mapD1Ev[boost::program_options::variables_map::~variables_map()]+0x8): référence indéfinie vers « vtable for boost::program_options::variables_map»
/tmp/cc7SFuit.o: In function `boost::program_options::validation_error::validation_error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
first.cpp:(.text._ZN5boost15program_options16validation_errorC1ERKSs[boost::program_options::validation_error::validation_error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x1a): référence indéfinie vers « vtable for boost::program_options::validation_error»
/tmp/cc7SFuit.o: In function `std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& boost::program_options::validators::get_single_string<char>(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool)':
first.cpp:(.text._ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb[std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& boost::program_options::validators::get_single_string<char>(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool)]+0x160): référence indéfinie vers « typeinfo for boost::program_options::validation_error»
first.cpp:(.text._ZN5boost15program_options10validators17get_single_stringIcEERKSbIT_St11char_traitsIS3_ESaIS3_EERKSt6vectorIS7_SaIS7_EEb[std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& boost::program_options::validators::get_single_string<char>(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool)]+0x285): référence indéfinie vers « typeinfo for boost::program_options::validation_error»
/tmp/cc7SFuit.o: In function `boost::program_options::validation_error::~validation_error()':
first.cpp:(.text._ZN5boost15program_options16validation_errorD1Ev[boost::program_options::validation_error::~validation_error()]+0x9): référence indéfinie vers « vtable for boost::program_options::validation_error»
/tmp/cc7SFuit.o: In function `boost::program_options::validation_error::~validation_error()':
first.cpp:(.text._ZN5boost15program_options16validation_errorD2Ev[boost::program_options::validation_error::~validation_error()]+0x9): référence indéfinie vers « vtable for boost::program_options::validation_error»
/tmp/cc7SFuit.o: In function `boost::program_options::validation_error::validation_error(boost::program_options::validation_error const&)':
first.cpp:(.text._ZN5boost15program_options16validation_errorC2ERKS1_[boost::program_options::validation_error::validation_error(boost::program_options::validation_error const&)]+0x1a): référence indéfinie vers « vtable for boost::program_options::validation_error»
/tmp/cc7SFuit.o: In function `void boost::program_options::validate<int, char>(boost::any&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, int*, long)':
first.cpp:(.text._ZN5boost15program_options8validateIicEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l[void boost::program_options::validate<int, char>(boost::any&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, int*, long)]+0xf): référence indéfinie vers « boost::program_options::validators::check_first_occurrence(boost::any const&)»
first.cpp:(.text._ZN5boost15program_options8validateIicEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l[void boost::program_options::validate<int, char>(boost::any&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, int*, long)]+0xc0): référence indéfinie vers « boost::program_options::invalid_option_value::invalid_option_value(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)»
/tmp/cc7SFuit.o: In function `boost::program_options::typed_value<int, char>::name() const':
first.cpp:(.text._ZNK5boost15program_options11typed_valueIicE4nameEv[boost::program_options::typed_value<int, char>::name() const]+0x68): référence indéfinie vers « boost::program_options::arg     »
first.cpp:(.text._ZNK5boost15program_options11typed_valueIicE4nameEv[boost::program_options::typed_value<int, char>::name() const]+0x103): référence indéfinie vers « boost::program_options::arg     »
/tmp/cc7SFuit.o: In function `std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > boost::program_options::to_internal<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)':
first.cpp:(.text._ZN5boost15program_options11to_internalISsEESt6vectorISsSaISsEERKS2_IT_SaIS5_EE[std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > boost::program_options::to_internal<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)]+0x55): référence indéfinie vers « boost::program_options::to_internal(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)»
/tmp/cc7SFuit.o: In function `boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char**)':
first.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcEC1EiPPc[boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char**)]+0x4f): référence indéfinie vers « boost::program_options::detail::cmdline::cmdline(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)»
/tmp/cc7SFuit.o: In function `boost::program_options::basic_command_line_parser<char>::options(boost::program_options::options_description const&)':
first.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE7optionsERKNS0_19options_descriptionE[boost::program_options::basic_command_line_parser<char>::options(boost::program_options::options_description const&)]+0x14): référence indéfinie vers « boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description const&)»
/tmp/cc7SFuit.o: In function `boost::program_options::basic_command_line_parser<char>::style(int)':
first.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE5styleEi[boost::program_options::basic_command_line_parser<char>::style(int)]+0x14): référence indéfinie vers « boost::program_options::detail::cmdline::style(int)»
/tmp/cc7SFuit.o: In function `boost::program_options::basic_command_line_parser<char>::extra_parser(boost::function1<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::allocator<boost::function_base> >)':
first.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairISsSsERKSsSaINS_13function_baseEEEE[boost::program_options::basic_command_line_parser<char>::extra_parser(boost::function1<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::allocator<boost::function_base> >)]+0x27): référence indéfinie vers « boost::program_options::detail::cmdline::set_additional_parser(boost::function1<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::allocator<boost::function_base> >)»
/tmp/cc7SFuit.o: In function `boost::program_options::basic_command_line_parser<char>::run()':
first.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE3runEv[boost::program_options::basic_command_line_parser<char>::run()]+0x2a): référence indéfinie vers « boost::program_options::detail::cmdline::run()  »
/tmp/cc7SFuit.o: In function `boost::program_options::variables_map::operator[](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const':
first.cpp:(.text._ZNK5boost15program_options13variables_mapixERKSs[boost::program_options::variables_map::operator[](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const]+0x14): référence indéfinie vers « boost::program_options::abstract_variables_map::operator[](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const»
/tmp/cc7SFuit.o:(.rodata._ZTVN5boost15program_options11typed_valueIicEE[vtable for boost::program_options::typed_value<int, char>]+0x18): référence indéfinie vers « boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool) const»
/tmp/cc7SFuit.o:(.rodata._ZTIN5boost15program_options11typed_valueIicEE[typeinfo for boost::program_options::typed_value<int, char>]+0x8): référence indéfinie vers « typeinfo for boost::program_options::value_semantic_codecvt_helper<char>»
/tmp/cc7SFuit.o:(.rodata._ZTIN5boost15program_options20invalid_option_valueE[typeinfo for boost::program_options::invalid_option_value]+0x8): référence indéfinie vers « typeinfo for boost::program_options::validation_error»
/tmp/cc7SFuit.o:(.rodata._ZTVN5boost15program_options20invalid_option_valueE[vtable for boost::program_options::invalid_option_value]+0x10): référence indéfinie vers « boost::program_options::validation_error::what() const»
collect2: ld returned 1 exit status

Si vous pouviez tester sur vos installations (l'installation prend quelques secondes seulement) la compilation de ce fichier afin de savoir si je dois soumettre, ou non, un rapport de bug...

Merci d'avance.

Merci d'avance.

#2 Le 23/02/2007, à 23:39

gene69

Re : Impossible d'utiliser libboost-program-options-dev sous Ubuntu ?

je suis en train d'essayer.
indique la démarche précise.
25 Mo à dl pour ma connexion "(l'installation prend quelques secondes seulement)" c'est vite dit.


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#3 Le 24/02/2007, à 00:43

Magic Banana

Re : Impossible d'utiliser libboost-program-options-dev sous Ubuntu ?

Désolé... Tu n'avais probablement pas encore libboost qui est une dépendance un peu plus imposante (quelques secondes c'est pour libboost-program-options-dev seul).

Ce que j'ai fait exactement :

$ sudo apt-get libboost-program-options-dev
$ cp /usr/share/doc/libboost-doc/examples/libs/program_options/example/first.cpp .
$ g++ first.cpp

Merci pour ton aide.


Je doute toutefois qu'il s'agisse d'un problème lié à Ubuntu puisque j'ai les mêmes erreurs sur Gentoo.
Il me semble qu'un bug dans libboost-program-options-dev est aussi à exclure (puisque même le fichier en exemple le plus simple qui soit ne linke pas correctement).

Je ne vois pas où chercher... sad

#4 Le 24/02/2007, à 22:49

Magic Banana

Re : Impossible d'utiliser libboost-program-options-dev sous Ubuntu ?

Vraiment personne ? sad

#5 Le 25/02/2007, à 01:13

Magic Banana

Re : Impossible d'utiliser libboost-program-options-dev sous Ubuntu ?

La réponse m'a été donné par netfab sur le forum Gentoo : il faut ajouter l'option de compilation -lboost_program_options : smile

g++ -lboost_program_options first.cpp

Je ne sais toujours pas où il a trouvé cette information !