Can't link. Issue with Boost 1.53
Issue #32
resolved
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)
-
-
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 ;)
-
Thanks for your feedback. Can you tell me the result of the following command please: apt-cache policy libboost-program-options-dev
Thanks.
-
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
-
reporter - changed status to resolved
My fault. Mixed headers and libraries of different versions
-
No problem. Thanks for your feedback. Best regards.
- Log in to comment
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.