Я застрял в этой проблеме в течение нескольких недель и искал решение в Интернете, но пока не так хорошо...
Итак, у меня есть программа, написанная кем-то другим, и я пытаюсь скомпилировать ее в Matlab, чтобы она заработала. Мой компьютер — рабочая станция Red-hat Enterprise Linux (64 бита) с установленными gcc 4.4.3 и Matlab 2011b. GCC совместим с моим Matlab (http://www.mathworks.com/support/compilers/R2011b/glnxa64.html).
Компиляция работает нормально (я имею в виду, что в командном окне Matlab не появляется сообщение об ошибке). Но после компиляции каждый раз, когда я использую определенную функцию из компиляции (она называется «mexLasso»), она будет показывать такие ошибки:
***Неверный MEX-файл '/usr/local/matlab_R2011b/toolbox/spams-matlab/build/mexLasso.mexa64': /usr/local/matlab_R2011b/bin/glnxa64/../../sys/os/glnxa64 /libstdc++.so.6: версия GLIBCXX_3.4.11 не найдена (требуется /usr/local/matlab_R2011b/toolbox/spams-matlab/build/mexLasso.mexa64)
Ошибка в тесте (строка 24) alpha=mexLasso(X,D,param);*
Итак, я набрал в терминале «strings /usr/lib/libstdc++.so.6 | grep GLIBC» и обнаружил, что на самом деле в нем находится «GLIBCXX_3.4.11».
Я использую Linux и gcc всего несколько месяцев... так что я еще многого не понимаю. Будет очень полезно, если вы объясните это подробно. Спасибо!!
%% Подробнее: я получил эти программы по машинному обучению с http://spams-devel.gforge.inria.fr/downloads.html. Странно то, что после компиляции другие функции в этом пакете работают нормально (например, "mexTrainDL").
strings
иgrep
немного упрощенно для просмотра того, что определяет библиотека, особенно с учетом искажения имен C++. Используйтеnm
и связанные инструменты, как описано здесь: stackoverflow.com/questions/34732/ - person Andrew Janke   schedule 21.03.2014