GLIBCXX не найден при компиляции примера vtk под mex - PullRequest
4 голосов
/ 07 декабря 2011

Я пытался следовать этому примеру для компиляции vtk в MATLAB с использованием mex на Ubuntu 11.10. Команда 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 найден? Я бы предположил, что он будет включен по умолчанию в компиляцию.

1 Ответ

12 голосов
/ 08 декабря 2011

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 

Многие люди жалуются на то, что в Интернете существуют разные решения, если эти два не работают.

...