运行程序时出现如下错误:
/MATLAB/R2012a/bin/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./corrOptt)
看libstdc++.so.6里都包括哪些:
strings /opt/MATLAB/R2012a/bin/glnxa64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
解决方法:
在系统里搜索一下libstdc++.so.6,执行:
locate libstdc++.so.6
...
/usr/lib/i386-linux-gnu/libstdc++.so.6
/usr/lib/i386-linux-gnu/libstdc++.so.6.0.20
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
/usr/share/gdb/auto-load/usr/lib/i386-linux-gnu/libstdc++.so.6.0.20-gdb.py
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20-gdb.py
拷贝64位的libstdc++.so.6.0.20到strings /opt/MATLAB/R2012a/bin/glnxa64目录:
sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 /opt/MATLAB/R2012a/bin/glnxa64
进入/opt/MATLAB/R2012a/bin/glnxa64目录:
删除原来旧的libstdc++.so.6链接:
sudo rm libstdc++.so.6
将libstdc++.so.6指向libstdc++.so.6.0.20
sudo ln -s libstdc++.so.6.0.20 libstdc++.so.6
可以看一下libstdc++.so.6.0.20中包含的:
strings /opt/MATLAB/R2012a/bin/glnxa64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_DEBUG_MESSAGE_LENGTH
重新运行程序,问题解决。