arm-linux-gnueabihf-g++交叉编译出错undefined reference to `std::__cxx11::basic_stringstream
使用zmq写了一个工程代码,c++语言写的,arm-linux-gnueabihf-g++交叉编译一直报如下错
[100%] Linking CXX executable basic_service_app /home/workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home//workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference to
VTT for std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'/home/workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home/zlx/workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tovtable for std::basic_streambuf<char, std::char_traits<char> >@GLIBCXX_3.4'/home/zlx/workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home/zlx/workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference to__cxa_throw_bad_array_new_length@CXXABI_1.3.8'/home/zlx/workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home/zlx/workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tostd::condition_variable::condition_variable()@GLIBCXX_3.4.11'/home/zlx/workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home/zlx/workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tostd::basic_ios<char, std::char_traits<char> >::init(std::basic_streambuf<char, std::char_traits<char> >*)@GLIBCXX_3.4'/home/zlx/workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home/zlx/workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tostd::__throw_system_error(int)@GLIBCXX_3.4.11'/home/zlx/workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home/zlx/workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tostd::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned int, unsigned int, char const*, unsigned int)@GLIBCXX_3.4.21'/home/zlx/workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home/zlx/workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tostd::__detail::_List_node_base::_M_unhook()@GLIBCXX_3.4.15'/home//workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home//workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tooperator delete(void*)@GLIBCXX_3.4'/home//workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home//workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tooperator delete(void*, std::nothrow_t const&)@GLIBCXX_3.4'/home//workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home//workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tostd::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)@GLIBCXX_3.4.9'/home//workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home//workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tostd::locale::locale()@GLIBCXX_3.4'/home//workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home//workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tostd::_Rb_tree_decrement(std::_Rb_tree_node_base*)@GLIBCXX_3.4'/home//workspace/wvpn-rv1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: /home//workspace/gitlab/basic_service_app/./lib/zeromq/libzmq.so: undefined reference tovtable for std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >@GLIBCXX_3.4.21'
看报错,我以为是使用的是嵌入式 g++不支持导致的。就换成 C语言编写。但是还是报错。
最后研究发现是因为我在编译zmq时使用的arm-linux-gnueabihf-g++不一致导致的。
我的ubuntu系统中存在两个编译arm-linux-gnueabihf-g++,一个是系统自带的arm-linux-gnueabihf-g++,我以前安装。另外一个是芯片sdk 的arm-linux-gnueabihf-g++,zmq使用的arm-linux-gnueabihf-g++版本过低,而我的工程代码使用的是芯片的arm-linux-gnueabihf-g++。libzmq中编译生成的so不匹配。
换成sdk中arm-linux-gnueabihf-g++编译成功。特此记录
更多推荐
所有评论(0)