Ubuntu 16.04 的Matlab突然报错CXXABI_1.3.8' not found

本文详细记录了解决MATLAB调用caffe接口时遇到的CXXABI版本冲突问题。通过对比MATLAB和Anaconda中libstdc++.so.6的CXXABI版本,发现MATLAB版本过低,缺少CXXABI_1.3.8。最终通过替换MATLAB的libstdc++.so.6为Anaconda中更高版本的libstdc++.so.6.0.24解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

坦白说我不知道CXXABI_1.3.8是个啥,但是他影响了我用matlab调用caffe接口。所以只能硬着头皮看看是啥。
错误如下:

MATLAB:dispatcher:loadLibrary Can’t load ‘/usr/local/MATLAB/R2014a/bin/glnxa64/libmwmm_rmidd_mi.so’: /usr/local/MATLAB/R2014a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: version `CXXABI_1.3.8’ not found (required by /home/lcy/anaconda2/lib/./libicui18n.so.58).

我有个大概率不准确的猜测,是修改完成后猜的。就是matlab的libstdc++.so.6链接到/libstdc++.so.6.0.17这个版本不够高,没有CXXABI_1.3.8,所以要找一个足够高的版本来。我是参考的https://blog.youkuaiyun.com/u012325865/article/details/80410163这位博主的方法,从anaconda2里面找到libstdc++.so.6.0.24这个版本,然后拷贝到matlab相应的目录下修改了这个错误。
具体操作如下:

1.首先查看matlab的/libstdc++.so.6的CXXABI版本

strings /usr/local/MATLAB/R2014a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6 | grep 'CXXABI'

结果显示出来很多CXXABI版本确实没有CXXABI_1.3.8

2.然后查看anaconda2的版本

strings /anaconda2/lib/libstdc++.so.6 | grep 'CXXABI'

他确实有版本1.3.8

3.用 ll 查看一下anaconda2的libstdc++.so.6和谁链接,就是上面提到的libstdc++.so.6.0.24

4.把anaconda的libstdc++.so.6.0.24复制到matlab相应目录下

cp /anaconda2/lib/libstdc++.so.6.0.24  /usr/local/MATLAB/R2014a/bin/glnxa64/../../sys/os/glnxa64/

5.到matlab目录下删掉matlab原来的libstdc++.so.6

cd /usr/local/MATLAB/R2014a/bin/glnxa64/../../sys/os/glnxa64/
rm -rf libstdc++.so.6

6.重新建立连接

ln -s libstdc++.so.6.0.24 libstdc++.so.6

到这里应该就好了,如果还不行试试ldconfig。

ubuntu真的太难搞了……

### 回答1: 在Ubuntu 16.04上使用ROS时,执行"rosdep init"命令时可能会遇到报错。这个问题通常是由于网络连接问题导致的。要解决这个问题,可以按照以下步骤进行操作: 1. 首先,确保您的网络连接是正常的,可以尝试更换网络连接方式(例如使用有线连接代替无线连接)并重试命令。 2. 如果更换网络连接方式仍然无法解决问题,可以尝试使用以下命令来更新ROS的依赖项: ``` sudo apt-get update sudo apt-get install python-rosdep ``` 3. 如果上述步骤仍然无法解决问题,可以尝试手动初始化rosdep。首先,通过以下命令创建一个rospkg目录: ``` sudo mkdir /etc/ros/rosdep/sources.list.d ``` 4. 然后,使用以下命令创建一个rosdep源列表文件: ``` sudo sh -c 'echo "yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml" > /etc/ros/rosdep/sources.list.d/20-default.list' ``` 5. 最后,执行以下命令来初始化rosdep: ``` rosdep init ``` 通过执行上述步骤,您应该能够成功初始化rosdep,并继续使用ROS。希望这些信息对您有所帮助! ### 回答2: 当使用`ubuntu 16.04`系统上的`rosdep init`命令时,可能会遇到报错。这个错误通常是由于`rosdep`工具中的源文件问题引起的。 要解决这个问题,可以按照以下步骤进行操作: 1. 打开终端,输入以下命令来编辑`rosdep`源文件: ``` sudo nano /etc/ros/rosdep/sources.list.d/20-default.list ``` 2. 在打开的文件中,你会看到一些URL链接。这些链接是`rosdep`工具用来下载依赖关系的源文件。 3. 将所有的URL链接注释掉,或者将它们删除。你可以在前面添加一个井号(#)来注释掉链接。 4. 在文件的末尾,添加以下源文件链接: ``` yaml http://packages.ros.org/ros/rosdep/ubuntu.yaml ``` 5. 保存文件并退出编辑器。 6. 运行以下命令来更新`rosdep`工具的源文件: ``` sudo rosdep update ``` 7. 现在你可以尝试再次运行`rosdep init`命令,应该不会再出现错误。 这些步骤将修复`ubuntu 16.04`系统上`rosdep init`命令的报错问题,并正确初始化`rosdep`工具。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值