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

Reply via email to