2011-12-07 34 views
4

我一直試圖按照this example在Ubuntu 11.10上使用mex編譯MATLAB中的vtk。我使用的MEX命令如下:在mex下編譯vtk示例時找不到GLIBCXX

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被發現?我會假定在編譯時默認包含它。

回答

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 

許多人抱怨說在互聯網上,有不同的解決方案,如果這兩個不起作用。

+1

+1絕對正確。我只是假設較新的編譯器不會是一個問題。 –

+0

非常好的解決方案! – Rasoul