我正在尝试编译一个共享库,它将在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。然后问题就出现了。问题是什么?如何在不太痛苦的情况下解决它?
发布于 2011-10-26 23:07:22
MatLab R2011a编译错误解决方案。
下载并安装GCC-4.4
使用命令: mbuild -setup
选择选项1,然后您将获得一个位于/usr/local/MATLAB/R2011a/bin/mbuiltopts.sh中的文件
搜索文件并将所有编译器选项替换为gcc-4.4
然后编译它,它应该是好的!
发布于 2011-10-04 03:46:37
根目录是GLIBCXX_3.4.14' not found。看起来类似的SO问题:GLIBCXX versions和@ninjalj的答案,看起来你有一个链接器问题:
优先使用
readelf -a和objdump -x检查ELF文件,而不是strings。
实际上,所有的GLIBCXX_*版本并不适用于整个库,而是适用于每个符号(符号版本控制,请参阅DSO-howto)。所以你可以在同一个库文件中使用例如:std::char_traits<wchar_t>::eq@@GLIBCXX_3.4.5和std::ios_base::Init::~Init()@@GLIBCXX_3.4。
您的程序需要GLIBCXX_3.4.9这一事实可能意味着它已经链接到一个已经在GLIBCXX_3.4.9上引入/改变了语义的符号。
发布于 2012-02-07 18:52:11
我尝试了Eric Chu的答案,但这是唯一对我有效的方法:
sudo ln -s /usr/lib/libstdc++.so.6 {MATLABROOT}/sys/os/{architecture}/libstdc++.so.6您需要先备份该文件。
https://stackoverflow.com/questions/7639666
复制相似问题