文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。
笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者:Aliven888
项目场景:
基于 地平线x3 板子进行自动泊车功能中的环视拼接功能开发。
问题描述:
我在将交叉编译环境中编译好的软件拷贝到 x3 板子中执行时,遇到了如下问题:
./bin/horizon: /usr/lib/libstdc++.so.6: version `CXXABI_1.3.11' not found (required by /userdata/apa/lib/libadmultivioplugin.so.1)
原因分析:
提示:这里填写问题的分析:
在分析后发现,x3 板子中系统使用的是 libstdc++.so.6.0.22 , 而我们 Horizon 在编译时使用的是 libstdc++.so.6.0.25 。 也就是出现了高版本编译,但是在低版本时使用, 而低版本是不支持高版本的,所以升级 X3 板子系统中所使用的该库,以保证版本的一致。
```bash
# 两个 C++ 库的区别
libstdc++.so.6.0.22
libstdc++.so.6.0.25
aliven@Aliven:~$ strings libstdc++.so.6.0.22 | grep CXXABI
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_1.3.10
CXXABI_TM_1
aliven@Aliven:~$ strings libstdc++.so.6.0.25 | grep CXXABI
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_1.3.10
CXXABI_1.3.11
CXXABI_TM_1
解决方案:
sudo find /usr -name "libstdc++.so.*" #查找库的位置
# 开发版位置在 /usr/lib 中, 这里就以该路径举例,实际请以自己系统查找路径稳准。
sudo cp libstdc++.so.6.25 /usr/lib
sudo cd /usr/lib/
sudo rm libstdc++.so.6 ibstdc++.so.6.0.22
sudo ln -s libstdc++.so.6.0.25 libstdc++.so.6 # 建立软链接