program_options - example will not compile

I have the following: 1. */usr/local/lib/* which contains libboost_program_options.a libboost_program_options.so libboost_program_options.so_1.53.0 2. /usr/local/include/boost that contains program_options.hpp I want to compile this file which can be found in boost /libs/program_options/examples: ---------------------------------- // Copyright Vladimir Prus 2002-2004. // Distributed 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 <boost/program_options.hpp> namespace po = boost::program_options; #include <iostream> #include <iterator> 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<double>(), "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<double>() << ".\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; } ----------------------------- A. g++ error. This is the command I am using with g++ g++ first.cpp -o first -L/usr/local/lib/libboost_program_options.so and this is the error output: ------------ /tmp/cctMoqyr.o: In function `main': first.cpp:(.text+0x1a): undefined reference to `boost::program_options::options_description::m_default_line_length' first.cpp:(.text+0x2a): undefined reference to `boost::program_options::options_description::m_default_line_length' first.cpp:(.text+0x72): undefined reference to `boost::program_options::options_description::options_description(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned int)' first.cpp:(.text+0xed): undefined reference to `boost::program_options::options_description::add_options()' first.cpp:(.text+0x10b): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, char const*)' first.cpp:(.text+0x127): undefined reference to `boost::program_options::options_description_easy_init::operator()(char const*, boost::program_options::value_semantic const*, char const*)' first.cpp:(.text+0x135): undefined reference to `boost::program_options::variables_map::variables_map()' first.cpp:(.text+0x191): undefined reference to `boost::program_options::store(boost::program_options::basic_parsed_options<char> const&, boost::program_options::variables_map&, bool)' first.cpp:(.text+0x1e6): undefined reference to `boost::program_options::notify(boost::program_options::variables_map&)' first.cpp:(.text+0x28b): undefined reference to `boost::program_options::operator<<(std::basic_ostream<char, std::char_traits<char> >&, boost::program_options::options_description const&)' /tmp/cctMoqyr.o: In function `boost::program_options::error_with_option_name::~error_with_option_name()': first.cpp:(.text._ZN5boost15program_options22error_with_option_nameD2Ev[boost::program_options::error_with_option_name::~error_with_option_name()]+0xd): undefined reference to `vtable for boost::program_options::error_with_option_name' /tmp/cctMoqyr.o: In function `boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)': first.cpp:(.text._ZN5boost15program_options16validation_errorC1ENS1_6kind_tERKSsS4_i[boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)]+0x1d): undefined reference to `boost::program_options::validation_error::get_template(boost::program_options::validation_error::kind_t)' first.cpp:(.text._ZN5boost15program_options16validation_errorC1ENS1_6kind_tERKSsS4_i[boost::program_options::validation_error::validation_error(boost::program_options::validation_error::kind_t, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)]+0x47): undefined reference to `boost::program_options::error_with_option_name::error_with_option_name(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' /tmp/cctMoqyr.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()]+0x16): undefined reference to `vtable for boost::program_options::value_semantic_codecvt_helper<char>' /tmp/cctMoqyr.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()]+0xb): undefined reference to `vtable for boost::program_options::value_semantic_codecvt_helper<char>' /tmp/cctMoqyr.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): undefined reference to `boost::program_options::abstract_variables_map::operator[](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' /tmp/cctMoqyr.o: In function `boost::program_options::variables_map::~variables_map()': first.cpp:(.text._ZN5boost15program_options13variables_mapD1Ev[boost::program_options::variables_map::~variables_map()]+0xd): undefined reference to `vtable for boost::program_options::variables_map' /tmp/cctMoqyr.o: In function `boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*)': first.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcEC1EiPKPKc[boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, char const* const*)]+0x6b): undefined reference to `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/cctMoqyr.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): undefined reference to `boost::program_options::detail::cmdline::set_options_description(boost::program_options::options_description const&)' /tmp/cctMoqyr.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): undefined reference to `boost::program_options::detail::cmdline::style(int)' /tmp/cctMoqyr.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&>)': first.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairISsSsERKSsEE[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&>)]+0x28): undefined reference to `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&>)' /tmp/cctMoqyr.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()]+0x12): undefined reference to `boost::program_options::detail::cmdline::get_canonical_option_prefix()' first.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE3runEv[boost::program_options::basic_command_line_parser<char>::run()]+0x3d): undefined reference to `boost::program_options::detail::cmdline::run()' /tmp/cctMoqyr.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&)]+0x3c): undefined reference to `boost::program_options::to_internal(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost15program_options11typed_valueIdcEE[vtable for boost::program_options::typed_value<double, char>]+0x1c): undefined reference to `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/cctMoqyr.o:(.rodata._ZTVN5boost15program_options20invalid_option_valueE[vtable for boost::program_options::invalid_option_value]+0x10): undefined reference to `boost::program_options::error_with_option_name::what() const' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost15program_options20invalid_option_valueE[vtable for boost::program_options::invalid_option_value]+0x18): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost15program_options16validation_errorE[vtable for boost::program_options::validation_error]+0x10): undefined reference to `boost::program_options::error_with_option_name::what() const' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost15program_options16validation_errorE[vtable for boost::program_options::validation_error]+0x18): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' /tmp/cctMoqyr.o:(.rodata._ZTIN5boost15program_options11typed_valueIdcEE[typeinfo for boost::program_options::typed_value<double, char>]+0x10): undefined reference to `typeinfo for boost::program_options::value_semantic_codecvt_helper<char>' /tmp/cctMoqyr.o:(.rodata._ZTIN5boost15program_options16validation_errorE[typeinfo for boost::program_options::validation_error]+0x8): undefined reference to `typeinfo for boost::program_options::error_with_option_name' /tmp/cctMoqyr.o: In function `boost::program_options::typed_value<double, char>::name() const': first.cpp:(.text._ZNK5boost15program_options11typed_valueIdcE4nameEv[boost::program_options::typed_value<double, char>::name() const]+0x1f): undefined reference to `boost::program_options::arg' /tmp/cctMoqyr.o: In function `void boost::program_options::validate<double, 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&, double*, long)': first.cpp:(.text._ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l[void boost::program_options::validate<double, 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&, double*, long)]+0xf): undefined reference to `boost::program_options::validators::check_first_occurrence(boost::any const&)' first.cpp:(.text._ZN5boost15program_options8validateIdcEEvRNS_3anyERKSt6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l[void boost::program_options::validate<double, 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&, double*, long)]+0x92): undefined reference to `boost::program_options::invalid_option_value::invalid_option_value(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cctMoqyr.o: In function `boost::program_options::error_with_option_name::error_with_option_name(boost::program_options::error_with_option_name const&)': first.cpp:(.text._ZN5boost15program_options22error_with_option_nameC2ERKS1_[boost::program_options::error_with_option_name::error_with_option_name(boost::program_options::error_with_option_name const&)]+0x1f): undefined reference to `vtable for boost::program_options::error_with_option_name' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE[vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::validation_error> ]+0x14): undefined reference to `boost::program_options::error_with_option_name::what() const' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options16validation_errorEEEEE[vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::validation_error> ]+0x1c): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE[vtable for boost::exception_detail::error_info_injector<boost::program_options::validation_error>]+0x10): undefined reference to `boost::program_options::error_with_option_name::what() const' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost16exception_detail19error_info_injectorINS_15program_options16validation_errorEEE[vtable for boost::exception_detail::error_info_injector<boost::program_options::validation_error>]+0x18): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE[vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value> ]+0x14): undefined reference to `boost::program_options::error_with_option_name::what() const' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_15program_options20invalid_option_valueEEEEE[vtable for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value> ]+0x1c): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE[vtable for boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value>]+0x10): undefined reference to `boost::program_options::error_with_option_name::what() const' /tmp/cctMoqyr.o:(.rodata._ZTVN5boost16exception_detail19error_info_injectorINS_15program_options20invalid_option_valueEEE[vtable for boost::exception_detail::error_info_injector<boost::program_options::invalid_option_value>]+0x18): undefined reference to `boost::program_options::error_with_option_name::substitute_placeholders(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' collect2: ld returned 1 exit status
B. Clang error. I tried using clang instead with this command: clang first.cpp -o first -L/usr/local/lib/libboost_program_options.so and this is the error I get: In file included from first.cpp:9: In file included from /usr/local/include/boost/program_options.hpp:15: In file included from /usr/local/include/boost/program_options/options_description.hpp:13: In file included from /usr/local/include/boost/program_options/value_semantic.hpp:14: In file included from /usr/local/include/boost/lexical_cast.hpp:151: /usr/include/c++/4.4/cmath:518:14: error: cannot compile this builtin function yet return __builtin_isinf(__type(__f)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 diagnostic generated. ---------------------------- How can this be fixed?

I want to compile this file which can be found in boost /libs/program_options/examples:
A. g++ error. This is the command I am using with g++ g++ first.cpp -o first -L/usr/local/lib/libboost_program_options.so
and this is the error output:
------------ /tmp/cctMoqyr.o: In function `main': first.cpp:(.text+0x1a): undefined reference to `boost::program_options::options_description::m_default_line_length' <snip>
The -L argument to g++ specifies a *directory* to search for libraries. The -l argument is used to specify which libraries you want to link. So, a fixed version of the command line would be something like: g++ first.cpp -o first -L/usr/local/lib -lboost_program_options If /usr/local/lib is configured as one of the system library directories, you might not even need the -L. Jason
participants (2)
-
Jason Roehm
-
Neil Sutton