1

我正在尝试编译一个共享库,它将在 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。然后问题就出来了。是什么问题以及如何在没有太多痛苦的情况下解决它?

4

3 回答 3

1

MatLab R2011a 编译错误解决方案。

下载并安装 GCC-4.4

使用命令:mbuild -setup

选择选项 1,然后您将在 /usr/local/MATLAB/R2011a/bin/mbuildopts.sh 中找到一个文件

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

然后编译一下,应该没问题!

于 2011-10-26T15:07:22.317 回答
0

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

使用readelf -aobjdump -x来检查 ELF 文件,而不是strings.

实际上,所有 GLIBCXX_* 版本并不适用于整个库,而是适用于每个符号(符号版本控制,请参阅 DSO-howto)。所以你可以有例如: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 上引入/已更改语义的符号链接。

于 2011-10-03T19:46:37.417 回答
0

我尝试了 Eric Chu 的回答,但这是唯一对我有用的东西:

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

您需要先备份文件。

于 2012-02-07T10:52:10.937 回答