我一直在尝试跟随this example在Ubuntu 11.10上使用mex在MATLAB中编译vtk。我使用的mex命令如下:
mex -I/usr/include/vtk-5.6 vtk_file.cpp -L/usr/lib/ -lvtkFiltering -lvtkRendering -lvtkCommon
编译后我有一个.mexa64
文件。
然而,当我尝试运行该文件时,我最终得到以下错误:
Invalid MEX-file '/home/bill/Documents/MATLAB/vtk/vtk_file.mexa64':
/usr/local/MATLAB/R2011b/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6:
version `GLIBCXX_3.4.11' not found (required by /usr/lib/libvtkFiltering.so.5.6)
如何确保找到glibcxx?我原以为它会默认包含在编译中。
答案 0 :(得分:12)
Matlab使用自己的glibc图书馆,因此它常常是一团糟。
要解决该问题,您应首先尝试确保matlab使用支持的gcc版本。编译时是否收到警告?
如果你是sudoer,你也可以"强迫" matlab使用标准glibc,做类似的事情(我做了,它工作正常):
cd /usr/local/MATLAB/R2011a/sys/os/glnxa64
sudo mkdir old
sudo mv libstdc++.so.6* old
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6
很多人在互联网上抱怨这个问题,如果这两个问题不起作用,会有不同的解决方案。