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/e5fec2aaacc8a130bcff84f1f3bbd9
> 718250f029
>
> 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_
>> valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIc
>> EEEcE6xparseERNS_3anyERKSt6vectorIS7_SaIS7_EE[_ZNK5boost15pr
>> ogram_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_
>> stringIcSt11char_traitsIcESaIcEEESaISB_EE[_ZNK5boost15progra
>> m_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>::
>> extra_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_
>> command_line_parserIcE12extra_parserENS_9function1ISt4pairIN
>> St7__cxx1112basic_stringIcSt11char_traitsIcESaIc
>> EEESA_ERKSA_EE[_ZN5boost15program_options25basic_command_
>> line_parserIcE12extra_parserENS_9function1ISt4pairINSt7__cxx1112basic_
>> stringIcSt11char_traitsIcESaIcEEESA_ERKSA_EE]+0x46): undefined reference
>> to `boost::program_options::detail::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_
>> command_line_parserIcEC2EiPKPKc[_ZN5boost15program_options25
>> basic_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_
>> command_line_parserIcEC2EiPKPKc[_ZN5boost15program_options25
>> basic_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_
>> valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIc
>> EEEcE4nameEv[_ZNK5boost15program_options11typed_valueINSt7__
>> cxx1112basic_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_opti
>> ons8validateIfcEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_
>> stringIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l]+0x4da): undefined
>> reference to `boost::program_options::invalid_option_value::invalid_optio
>> n_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_opti
>> ons8validateIicEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_
>> stringIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l]+0x3f8): undefined
>> reference to `boost::program_options::invalid_option_value::invalid_optio
>> n_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_
>> injectorINS_15program_options20invalid_option_
>> valueEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19e
>> rror_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_
>> injectorINS_15program_options16validation_errorEEEEE
>> [_ZTVN5boost16exception_detail10clone_implINS0_19error_info_
>> injectorINS_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[_
>> ZTVN5boost15program_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_
>> stringIcSt11char_traitsIcESaIcEEEcEE[_ZTVN5boost15program_op
>> tions11typed_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