I'm glad that worked. This GCC ABI change is causing some unfortunate build complexities during the transition. I ran into this issue using clang and boost on Ubuntu 16.04.
On Fri, Oct 28, 2016 at 7:37 PM, Joe K <[email protected]> wrote: > Hi Derek, > > Yeah, that seemed to work. Thanks!! > > Specifically, I'm not entirely sure I have my format correctly, but I > executed it as: > cmake -DCMAKE_CXX_FLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" .. > > If I simply did cmake -D_GLIBCXX.... then I got a warning that the flag > wasn't used and (of course) the build failed. Doing it the above way threw > some warnings but it seems to have worked. > > Also, I had to use the same flag to both build Volk and GR. Although I > don't know if the latter picked up my Volk build/install. > > Thanks, > Joe > > On Fri, Oct 28, 2016 at 6:05 PM, Derek Kozel <[email protected]> > wrote: > >> Hello Joe, >> >> Looking at the Volk commit history there was a change in July to improve >> linking support between GCC4 and 5. >> https://github.com/gnuradio/volk/commit/e5fec2aaacc8a130bcff >> 84f1f3bbd9718250f029 >> >> It looks like Fedora 22 is taking an interesting approach to dealing with >> the ABI transition in libc. >> http://developers.redhat.com/blog/2015/02/10/gcc-5-in-fedora/ >> >> Try running cmake for volk with -D_GLIBCXX_USE_CXX11_ABI=0 >> >> Regards, >> Derek >> >> On Fri, Oct 28, 2016 at 5:56 PM, Joe K <[email protected]> wrote: >> >>> Hi, >>> >>> I'm having a problem building Volk 1.3 or GNU Radio version than 3.7.10 >>> (any) or 3.7.9.3. Versions 3.7.9.2 and older seem to work fine. This is >>> on a Fedora 22 system. >>> >>> I'm getting a ton of undefined reference errors to various Boost >>> functions. I originally thought maybe the installed version of Boost was >>> not up to date so I removed the version from the repo and built and >>> installed Boost 1.62 from source. No such luck. I've verified that the >>> libraries are installed in the correct locations and used the nm tool to >>> try to validate that the functions exist in the .so files, but that's a bit >>> over my head. >>> >>> I've tried to verify that the CMake configuration is reasonable and as >>> far as I can tell the linker is getting the correct commands. >>> >>> Any ideas? The make output is below. >>> >>> Thanks, >>> Joe >>> >>> >>> >>> [ 23%] Linking CXX executable volk_profile >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function >>> `boost::program_options::validation_error::validation_error( >>> boost::program_options::validation_error::kind_t, >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > const&, std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&, int)': >>> volk_profile.cc:(.text._ZN5boost15program_options16validatio >>> n_errorC2ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_ >>> traitsIcESaIcEEESA_i[_ZN5boost15program_options16validation_ >>> errorC5ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_i]+0x21): >>> undefined reference to `boost::program_options::valid >>> ation_error::get_template[abi:cxx11](boost::program_options: >>> :validation_error::kind_t)' >>> volk_profile.cc:(.text._ZN5boost15program_options16validatio >>> n_errorC2ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_ >>> traitsIcESaIcEEESA_i[_ZN5boost15program_options16validation_ >>> errorC5ENS1_6kind_tERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_i]+0x39): >>> undefined reference to `boost::program_options::error >>> _with_option_name::error_with_option_name(std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&, >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > const&, std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&, int)' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function >>> `boost::program_options::typed_value<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> >, char>::xparse(boost::any&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&) const': >>> volk_profile.cc:(.text._ZNK5boost15program_options11typed_va >>> lueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcE6x >>> parseERNS_3anyERKSt6vectorIS7_SaIS7_EE[_ZNK5boost15program_ >>> options11typed_valueINSt7__cxx1112basic_stringIcSt11char_ >>> traitsIcESaIcEEEcE6xparseERNS_3anyERKSt6vectorIS7_SaIS7_EE]+0x1c): >>> undefined reference to `boost::program_options::validate(boost::any&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&, >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >*, int)' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function >>> `boost::program_options::typed_value<bool, char>::xparse(boost::any&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&) const': >>> volk_profile.cc:(.text._ZNK5boost15program_options11typed_va >>> lueIbcE6xparseERNS_3anyERKSt6vectorINSt7__cxx1112basic_strin >>> gIcSt11char_traitsIcESaIcEEESaISB_EE[_ZNK5boost15program_ >>> options11typed_valueIbcE6xparseERNS_3anyERKSt6vectorINSt7__ >>> cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISB_EE]+0x1c): >>> undefined reference to `boost::program_options::validate(boost::any&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&, bool*, int)' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function >>> `boost::program_options::basic_command_line_parser<char>::ex >>> tra_parser(boost::function1<std::pair<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> >, >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > >, std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&>)': >>> volk_profile.cc:(.text._ZN5boost15program_options25basic_com >>> mand_line_parserIcE12extra_parserENS_9function1ISt4pairINSt7 >>> __cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_ERKSA_EE[ >>> _ZN5boost15program_options25basic_command_line_ >>> parserIcE12extra_parserENS_9function1ISt4pairINSt7__ >>> cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_ERKSA_EE]+0x46): >>> undefined reference to `boost::program_options::detai >>> l::cmdline::set_additional_parser(boost::function1<std::pair >>> <std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > >, >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > const&>)' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function >>> `boost::program_options::basic_command_line_parser<char>::basic_command_line_parser(int, >>> char const* const*)': >>> volk_profile.cc:(.text._ZN5boost15program_options25basic_com >>> mand_line_parserIcEC2EiPKPKc[_ZN5boost15program_options25bas >>> ic_command_line_parserIcEC5EiPKPKc]+0x19c): undefined reference to >>> `boost::program_options::to_internal(std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&)' >>> volk_profile.cc:(.text._ZN5boost15program_options25basic_com >>> mand_line_parserIcEC2EiPKPKc[_ZN5boost15program_options25bas >>> ic_command_line_parserIcEC5EiPKPKc]+0x1e7): undefined reference to >>> `boost::program_options::detail::cmdline::cmdline(std::vecto >>> r<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&)' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function >>> `boost::program_options::typed_value<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> >, char>::name() const': >>> volk_profile.cc:(.text._ZNK5boost15program_options11typed_va >>> lueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcE4n >>> ameEv[_ZNK5boost15program_options11typed_valueINSt7__cxx >>> 1112basic_stringIcSt11char_traitsIcESaIcEEEcE4nameEv]+0x1d): undefined >>> reference to `boost::program_options::arg[abi:cxx11]' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function >>> `boost::program_options::typed_value<int, char>::name() const': >>> volk_profile.cc:(.text._ZNK5boost15program_options11typed_va >>> lueIicE4nameEv[_ZNK5boost15program_options11typed_valueIicE4nameEv]+0x1d): >>> undefined reference to `boost::program_options::arg[abi:cxx11]' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function >>> `boost::program_options::typed_value<float, char>::name() const': >>> volk_profile.cc:(.text._ZNK5boost15program_options11typed_va >>> lueIfcE4nameEv[_ZNK5boost15program_options11typed_valueIfcE4nameEv]+0x1d): >>> undefined reference to `boost::program_options::arg[abi:cxx11]' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function >>> `boost::program_options::typed_value<bool, char>::name() const': >>> volk_profile.cc:(.text._ZNK5boost15program_options11typed_va >>> lueIbcE4nameEv[_ZNK5boost15program_options11typed_valueIbcE4nameEv]+0x1d): >>> undefined reference to `boost::program_options::arg[abi:cxx11]' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function `main': >>> volk_profile.cc:(.text.startup+0x4d): undefined reference to >>> `boost::program_options::options_description::options_descri >>> ption(std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > const&, unsigned int, unsigned int)' >>> volk_profile.cc:(.text.startup+0x4f1): undefined reference to >>> `boost::program_options::abstract_variables_map::operator[]( >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > const&) const' >>> volk_profile.cc:(.text.startup+0x5b3): undefined reference to >>> `boost::program_options::abstract_variables_map::operator[]( >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > const&) const' >>> volk_profile.cc:(.text.startup+0x60a): undefined reference to >>> `boost::program_options::abstract_variables_map::operator[]( >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > const&) const' >>> volk_profile.cc:(.text.startup+0x6b2): undefined reference to >>> `boost::program_options::abstract_variables_map::operator[]( >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > const&) const' >>> volk_profile.cc:(.text.startup+0x6fd): undefined reference to >>> `boost::program_options::abstract_variables_map::operator[]( >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > const&) const' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o:volk_profile.cc:(.text.startup+0x75d): >>> more undefined references to `boost::program_options::abstr >>> act_variables_map::operator[](std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&) const' follow >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function `void >>> boost::program_options::validate<float, char>(boost::any&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&, float*, long)': >>> volk_profile.cc:(.text._ZN5boost15program_options8validateIf >>> cEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIT0_St11ch >>> ar_traitsIS7_ESaIS7_EEESaISB_EEPT_l[_ZN5boost15program_optio >>> ns8validateIfcEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_str >>> ingIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l]+0x4da): undefined >>> reference to `boost::program_options::inval >>> id_option_value::invalid_option_value(std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&)' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o: In function `void >>> boost::program_options::validate<int, char>(boost::any&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&, int*, long)': >>> volk_profile.cc:(.text._ZN5boost15program_options8validateIi >>> cEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIT0_St11ch >>> ar_traitsIS7_ESaIS7_EEESaISB_EEPT_l[_ZN5boost15program_optio >>> ns8validateIicEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_str >>> ingIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l]+0x3f8): undefined >>> reference to `boost::program_options::inval >>> id_option_value::invalid_option_value(std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&)' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o:(.rodata._ZTVN >>> 5boost16exception_detail19error_info_injectorINS_15program_o >>> ptions20invalid_option_valueEEE[_ZTVN5boost16exception_detai >>> l19error_info_injectorINS_15program_options20invalid_option_valueEEE]+0x30): >>> undefined reference to `boost::program_options::error >>> _with_option_name::substitute_placeholders(std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&) const' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o:(.rodata._ZTVN >>> 5boost16exception_detail10clone_implINS0_19error_info_inject >>> orINS_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::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&) const' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o:(.rodata._ZTVN >>> 5boost16exception_detail19error_info_injectorINS_15program_o >>> ptions16validation_errorEEE[_ZTVN5boost16exception_detail19e >>> rror_info_injectorINS_15program_options16validation_errorEEE]+0x30): >>> undefined reference to `boost::program_options::error >>> _with_option_name::substitute_placeholders(std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&) const' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o:(.rodata._ZTVN >>> 5boost16exception_detail10clone_implINS0_19error_info_inject >>> orINS_15program_options16validation_errorEEEEE[_ >>> ZTVN5boost16exception_detail10clone_implINS0_19error_info_in >>> jectorINS_15program_options16validation_errorEEEEE]+0x38): undefined >>> reference to `boost::program_options::error >>> _with_option_name::substitute_placeholders(std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&) const' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o:(.rodata._ZTVN >>> 5boost15program_options16validation_errorE[_ZTVN5boost15prog >>> ram_options16validation_errorE]+0x30): undefined reference to >>> `boost::program_options::error_with_option_name::substitute_ >>> placeholders(std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > const&) const' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o:(.rodata._ZTVN >>> 5boost15program_options20invalid_option_valueE[_ZTVN5boost15 >>> program_options20invalid_option_valueE]+0x30): more undefined >>> references to `boost::program_options::error >>> _with_option_name::substitute_placeholders(std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&) const' follow >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o:(.rodata._ZTVN >>> 5boost15program_options11typed_valueIbcEE[_ZTVN5boost15progr >>> am_options11typed_valueIbcEE]+0x40): undefined reference to >>> `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&, bool) const' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o:(.rodata._ZTVN >>> 5boost15program_options11typed_valueIfcEE[_ZTVN5boost15progr >>> am_options11typed_valueIfcEE]+0x40): undefined reference to >>> `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&, bool) const' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o:(.rodata._ZTVN >>> 5boost15program_options11typed_valueIicEE[_ZTVN5boost15progr >>> am_options11typed_valueIicEE]+0x40): undefined reference to >>> `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&, bool) const' >>> CMakeFiles/volk_profile.dir/volk_profile.cc.o:(.rodata._ZTVN >>> 5boost15program_options11typed_valueINSt7__cxx1112basic_stri >>> ngIcSt11char_traitsIcESaIcEEEcEE[_ZTVN5boost15program_option >>> s11typed_valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcEE]+0x40): >>> undefined reference to `boost::program_options::value >>> _semantic_codecvt_helper<char>::parse(boost::any&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&, bool) const' >>> collect2: error: ld returned 1 exit status >>> volk/apps/CMakeFiles/volk_profile.dir/build.make:126: recipe for target >>> 'volk/apps/volk_profile' failed >>> make[2]: *** [volk/apps/volk_profile] Error 1 >>> CMakeFiles/Makefile2:346: recipe for target >>> 'volk/apps/CMakeFiles/volk_profile.dir/all' failed >>> make[1]: *** [volk/apps/CMakeFiles/volk_profile.dir/all] Error 2 >>> >>> >>> _______________________________________________ >>> Discuss-gnuradio mailing list >>> [email protected] >>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >>> >>> >> >
_______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
