使用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 to vtable 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 to std::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 to std::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 to std::__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 to std::__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 to std::__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 to operator 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 to operator 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 to std::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 to std::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 to std::_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 to vtable 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++编译成功。特此记录

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐