使用Matlab R2011a在Ubuntu 11.04上编译Matlab mex文件时出错



我正在尝试编译一个共享库,该库将在Ubuntu 11.04上调用MATLAB函数。类似命令:

mcc - B cpplib:libStepCluster StepCluster.m

获取以下错误。

/usr/lib/i38-linux-gnu/i686-linux-gnu/4.5.2/cc1plus: /usr/local/MATLAB/R2010a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/lib/libppl_c.so.2) 
/usr/lib/i38-linux-gnu/i686-linux-gnu/4.5.2/cc1plus: /usr/local/MATLAB/R2010a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libppl_c.so.2) 
/usr/lib/i38-linux-gnu/i686-linux-gnu/4.5.2/cc1plus: /usr/local/MATLAB/R2010a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/lib/libppl.so.7) 
/usr/lib/i38-linux-gnu/i686-linux-gnu/4.5.2/cc1plus: /usr/local/MATLAB/R2010a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libppl.so.7) 
/usr/lib/i38-linux-gnu/i686-linux-gnu/4.5.2/cc1plus: /usr/local/MATLAB/R2010a/sys/os/glnx86/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libgmpxx.so.4)

我知道这段代码在Ubuntu 10.10上运行良好,并升级到了Ubuntu 11.04。然后问题就出来了。问题是什么?如何在不太痛苦的情况下解决它?

MatLab R2011a编译错误解决方案。

下载并安装GCC-4.4

使用命令:mbuild-setup

选择选项1,然后您将在/usr/local/MATLAB/R211a/bin/mbuildopts.sh 中获得一个文件

搜索文件并用gcc-4.4 替换所有编译器选项

然后编译它,它应该是好的!

根是GLIBCXX_3.4.14' not found。看看类似的SO问题:GLIBCXX版本和@ninjalj的答案,似乎你有一个链接器问题:

使用readelf -aobjdump -x检查首选项中的ELF文件至CCD_ 4。

实际上,所有的GLIBCXX_*版本并不适用于整个库,但适用于每个符号(符号版本控制,请参阅DSO操作指南(。所以你可以具有例如:std::char_traits<wchar_t>::eq@@GLIBCXX_3.4.5std::ios_base::Init::~Init()@@GLIBCXX_3.4

您的程序需要GLIBCXX_3.4.9这一事实可能意味着已链接到已引入/已更改的符号GLIBCXX_ 3.4.9上的语义。

我试过Eric Chu的答案,但这是唯一对我有效的方法:

sudo ln -s /usr/lib/libstdc++.so.6 {MATLABROOT}/sys/os/{architecture}/libstdc++.so.6

您将希望首先备份该文件。

相关内容

  • 没有找到相关文章

最新更新