Erreur de lien du programme Boost Program Options

J’ai des problèmes avec la liaison -lboost_program_options . Je ne peux même pas comstackr l’exemple minimum first.cpp .

Voici le cpp:

 // Copyright Vladimir Prus 2002-2004. // Dissortingbuted under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) /* The simplest usage of the library. */ #include  namespace po = boost::program_options; #include  #include  using namespace std; int main(int ac, char* av[]) { try { po::options_description desc("Allowed options"); desc.add_options() ("help", "produce help message") ("compression", po::value(), "set compression level") ; po::variables_map vm; po::store(po::parse_command_line(ac, av, desc), vm); po::notify(vm); if (vm.count("help")) { cout << desc << "\n"; return 0; } if (vm.count("compression")) { cout << "Compression level was set to " << vm["compression"].as() << ".\n"; } else { cout << "Compression level was not set.\n"; } } catch(exception& e) { cerr << "error: " << e.what() << "\n"; return 1; } catch(...) { cerr << "Exception of unknown type!\n"; } return 0; } 

Voici ma sortie:

  g++ -o first first.cpp -lboost_program_options /tmp/ccNDtU66.o: In function `main': first.cpp:(.text+0x6f): undefined reference to `boost::program_options::options_description::options_description(std::ssortingng const&, unsigned int, unsigned int)' /tmp/ccNDtU66.o: In function `boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::ssortingng const&, std::ssortingng const&, int)': first.cpp:(.text._ZN5boost15program_options16validation_errorC2ENS1_6kind_tERKSsS4_i[_ZN5boost15program_options16validation_errorC5ENS1_6kind_tERKSsS4_i]+0x2e): undefined reference to `boost::program_options::validation_error::get_template(boost::program_options::validation_error::kind_t)' first.cpp:(.text._ZN5boost15program_options16validation_errorC2ENS1_6kind_tERKSsS4_i[_ZN5boost15program_options16validation_errorC5ENS1_6kind_tERKSsS4_i]+0x4c): undefined reference to `boost::program_options::error_with_option_name::error_with_option_name(std::ssortingng const&, std::ssortingng const&, std::ssortingng const&, int)' /tmp/ccNDtU66.o: In function `boost::program_options::variables_map::operator[](std::ssortingng const&) const': first.cpp:(.text._ZNK5boost15program_options13variables_mapixERKSs[_ZNK5boost15program_options13variables_mapixERKSs]+0x1f): undefined reference to `boost::program_options::abstract_variables_map::operator[](std::ssortingng const&) const' /tmp/ccNDtU66.o: In function `boost::program_options::basic_command_line_parser::basic_command_line_parser(int, char const* const*)': first.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcEC2EiPKPKc[_ZN5boost15program_options25basic_command_line_parserIcEC5EiPKPKc]+0x76): undefined reference to `boost::program_options::detail::cmdline::cmdline(std::vector<std::string, std::allocator > const&)' /tmp/ccNDtU66.o: In function `boost::program_options::basic_command_line_parser::extra_parser(boost::function1<std::pair, std::ssortingng const&>)': first.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairISsSsERKSsEE[_ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairISsSsERKSsEE]+0x33): undefined reference to `boost::program_options::detail::cmdline::set_additional_parser(boost::function1<std::pair, std::ssortingng const&>)' /tmp/ccNDtU66.o: In function `std::vector<std::string, std::allocator > boost::program_options::to_internal(std::vector<std::string, std::allocator > const&)': first.cpp:(.text._ZN5boost15program_options11to_internalISsEESt6vectorISsSaISsEERKS2_IT_SaIS5_EE[_ZN5boost15program_options11to_internalISsEESt6vectorISsSaISsEERKS2_IT_SaIS5_EE]+0x46): undefined reference to `boost::program_options::to_internal(std::ssortingng const&)' /tmp/ccNDtU66.o:(.rodata._ZTVN5boost15program_options11typed_valueIdcEE[_ZTVN5boost15program_options11typed_valueIdcEE]+0x38): undefined reference to `boost::program_options::value_semantic_codecvt_helper::parse(boost::any&, std::vector<std::string, std::allocator > const&, bool) const' /tmp/ccNDtU66.o:(.rodata._ZTVN5boost15program_options20invalid_option_valueE[_ZTVN5boost15program_options20invalid_option_valueE]+0x30): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::ssortingng const&) const' /tmp/ccNDtU66.o:(.rodata._ZTVN5boost15program_options16validation_errorE[_ZTVN5boost15program_options16validation_errorE]+0x30): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::ssortingng const&) const' /tmp/ccNDtU66.o: In function `boost::program_options::typed_value::name() const': first.cpp:(.text._ZNK5boost15program_options11typed_valueIdcE4nameEv[_ZNK5boost15program_options11typed_valueIdcE4nameEv]+0x26): undefined reference to `boost::program_options::arg' /tmp/ccNDtU66.o: In function `void boost::program_options::validate(boost::any&, std::vector<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > > const&, double*, long)': first.cpp:(.text._ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l[_ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l]+0x128): undefined reference to `boost::program_options::invalid_option_value::invalid_option_value(std::ssortingng const&)' /tmp/ccNDtU66.o:(.rodata._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE]+0x38): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::ssortingng const&) const' /tmp/ccNDtU66.o:(.rodata._ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE]+0x30): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::ssortingng const&) const' /tmp/ccNDtU66.o:(.rodata._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE]+0x38): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::ssortingng const&) const' /tmp/ccNDtU66.o:(.rodata._ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE[_ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE]+0x30): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::ssortingng const&) const' collect2: error: ld returned 1 exit status Makefile:4: recipe for target 'first' failed make: *** [first] Error 1 

Comment puis-je réparer ça?

J’utilise Ubuntu 16.04, processeur Intel Core i5-6400 à 2,70 GHz

J’ai remarqué que j’ai utilisé g++-4.8 et il semble que ma version de boost (1.54.0) nécessite une version plus récente. Après être passé à g++-5 il se comstack normalement.