ошибка при компиляции mex-файла Matlab в Ubuntu 11.04 с Matlab R2011a - PullRequest
1 голос
/ 03 октября 2011

Я пытаюсь скомпилировать разделяемую библиотеку, которая вызовет функцию MATLAB в Ubuntu 11.04. Как команда:

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. Тогда проблема выходит. В чем проблема и как решить ее без особых проблем?

Ответы [ 3 ]

1 голос
/ 26 октября 2011

MatLab R2011a Решение проблемы с компиляцией.

Загрузите и установите GCC-4.4

Используйте команду: mbuild -setup

Выберите вариант 1, после чего вы получите файл locateв /usr/local/MATLAB/R2011a/bin/mbuildopts.sh

Найдите файл и замените все параметры компилятора на gcc-4.4

Затем скомпилируйте его, все будет хорошо!

0 голосов
/ 07 февраля 2012

Я попробовал ответ Эрика Чу, но это единственное, что сработало для меня:

sudo ln -s /usr/lib/libstdc++.so.6 {MATLABROOT}/sys/os/{architecture}/libstdc++.so.6

Сначала вы захотите сделать резервную копию файла.

0 голосов
/ 03 октября 2011

Корень GLIBCXX_3.4.14' not found.Если посмотреть похожий вопрос SO: GLIBCXX версии и ответ @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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...