Can't link. Issue with Boost 1.53

Issue #32 resolved
Davide Faconti created an issue

Hi,

I got this message during the linking process:

Linking CXX executable vera++
CMakeFiles/vera.dir/boost_main.cpp.o: In function `boost::program_options::error_with_option_name::~error_with_option_name()':
boost_main.cpp:(.text._ZN5boost15program_options22error_with_option_nameD2Ev[_ZN5boost15program_options22error_with_option_nameD5Ev]+0xd): undefined reference to `vtable for boost::program_options::error_with_option_name'
CMakeFiles/vera.dir/boost_main.cpp.o: In function `boost::program_options::basic_command_line_parser<char>::run()':
boost_main.cpp:(.text._ZN5boost15program_options25basic_command_line_parserIcE3runEv[boost::program_options::basic_command_line_parser<char>::run()]+0xe): undefined reference to `boost::program_options::detail::cmdline::get_canonical_option_prefix()'
CMakeFiles/vera.dir/boost_main.cpp.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'
CMakeFiles/vera.dir/boost_main.cpp.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'
CMakeFiles/vera.dir/boost_main.cpp.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'
CMakeFiles/vera.dir/boost_main.cpp.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'
CMakeFiles/vera.dir/boost_main.cpp.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'
CMakeFiles/vera.dir/boost_main.cpp.o: In function `boost::program_options::error_with_option_name::error_with_option_name(boost::program_options::error_with_option_name const&)':
boost_main.cpp:(.text._ZN5boost15program_options22error_with_option_nameC2ERKS1_[_ZN5boost15program_options22error_with_option_nameC5ERKS1_]+0x1e): undefined reference to `vtable for boost::program_options::error_with_option_name'
CMakeFiles/vera.dir/boost_main.cpp.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'
CMakeFiles/vera.dir/boost_main.cpp.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'
CMakeFiles/vera.dir/boost_main.cpp.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'
CMakeFiles/vera.dir/boost_main.cpp.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
make[2]: *** [src/vera++] Error 1
make[1]: *** [src/CMakeFiles/vera.dir/all] Error 2
make: *** [all] Error 2

Any clue?

Regards

Davide

Comments (6)

  1. Gaƫtan Lehmann

    Could you give more info on your OS, compiler, ... ? I've tested vera++ recently with boost 1.53 on Mac OS X - It was working without any problem. I'll retest it soon.

  2. Davide Faconti reporter

    sure.

    OS: Ubuntu 12.04 GCC: gcc version 4.6.4

    Anyway, before you spend time with it, let me try to rebuild boost. I will let you know ;)

  3. ThArGos

    Thanks for your feedback. Can you tell me the result of the following command please: apt-cache policy libboost-program-options-dev

    Thanks.

  4. Davide Faconti reporter

    good hint!

    That it is, it is my fault (I will investigate how to fix it myself).

    libboost-program-options-dev:
      Installed: 1.48.0.2
      Candidate: 1.48.0.2
      Version table:
     *** 1.48.0.2 0
            500 http://es.archive.ubuntu.com/ubuntu/ precise/main i386 Packages
            100 /var/lib/dpkg/status
    
  5. Log in to comment