【BUG】undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator

解决编译器报错:

undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::empty() const'

undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'

...等等这类报错

有效解决方案:

1.【最可能的错误原因】首先检查 设备运行的程序的编译命令 和 它所链接的库的编译命令 是否一致

比如我在遇到这个问题的时候

网络库的编译命令:arm-linux-gnueabihf-9.1.0-

而运行设备的代码里面用的编译命令是:arm-buildroot-linux-uclibcgnueabihf-

由于编译命令不一致,导致c++11的编译出来的接口不适配

2.如果编译命令一样,请考虑设备运行的程序的makefile或编译环境和它所链接的库的版本是否一样

比如boost库的版本你在其他库链接boost的时候,用了boost1.6.0;但你的设备运行环境里的编译选项所链接的boost库却是boost1.6.7,那么这时候你就需要从服务器上下载一致的库版本

3.单纯的自己在写编译命令的时候忘记加c++11的编译选项-std=c++11

那么解决方案就更简单了直接加上这个编译选项

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值