You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python导入Matlab Engine报错:缺失GLIBCXX_3.4.22版本

解决MATLAB Engine for Python导入时的GLIBCXX_3.4.22缺失问题

这个错误的核心原因很明确:你的Ubuntu 16.04系统默认的libstdc++.so.6库版本太低,不包含MATLAB R2018a依赖的GLIBCXX_3.4.22版本。重新安装MATLAB Engine没用是因为问题不在Engine安装本身,而是系统底层库的版本不匹配。

下面是具体的解决步骤:

1. 确认系统当前支持的GLIBCXX版本

先运行这条命令,检查你的系统现有libstdc++支持的版本:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

你会发现输出里确实没有GLIBCXX_3.4.22,这就是问题所在。

2. 安装更高版本的GCC(提供所需的libstdc++)

Ubuntu 16.04默认源里的GCC版本不足以提供GLIBCXX_3.4.22,我们需要安装GCC 7:

  • 首先添加官方的toolchain PPA:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
  • 更新软件源:
sudo apt update
  • 安装GCC 7和对应的G++:
sudo apt install gcc-7 g++-7

3. 让MATLAB Engine加载正确的libstdc++库

有两种方式可以实现,选其中一种即可:

方法一:临时设置环境变量(适合临时测试)

每次运行Python脚本前,先执行这条命令,把GCC 7的libstdc++路径加入到环境变量中:

export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/7:$LD_LIBRARY_PATH

之后再运行你的Python脚本,import matlab.engine应该就能正常工作了。

方法二:修改MATLAB的库链接(永久生效)

这种方法更稳定,不需要每次手动设置环境变量:

  • 先备份MATLAB自带的旧版libstdc++.so.6
sudo mv /usr/local/MATLAB/R2018a/bin/glnxa64/libstdc++.so.6 /usr/local/MATLAB/R2018a/bin/glnxa64/libstdc++.so.6.bak
  • 然后创建软链接,指向GCC 7提供的新版libstdc++.so.6
sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/7/libstdc++.so.6 /usr/local/MATLAB/R2018a/bin/glnxa64/libstdc++.so.6

4. 验证修复

完成上述步骤后,重新在Python中执行import matlab.engine,应该就不会再出现OSError了。

内容的提问来源于stack exchange,提问作者Dennis

火山引擎 最新活动