Ошибка компиляции Matlab Mex

Я использую библиотеку Random Forest для Matlab ( ссылка). Я использую это для классификации. В Windows он работает очень хорошо из коробки (предварительно скомпилированные mex-файлы), но я также хочу запустить его на кластере CentOS.

Я попытался скомпилировать его на кластере, выполнив make mex но я получаю ошибку. Вывод следующий:

rm twonorm_test -rf
rm  tempbuild/*.o *.o -rf
rm *~ -rf
rm *.mexw32 twonorm_test -rf
rm *.mexa64 -rf
rm classRF -rf
rm *.exe -rf
echo 'Compiling classTree.cpp'
Compiling classTree.cpp
g++ -fpic -O2 -funroll-loops -msse3 -c src/classTree.cpp -o tempbuild/classTree.o
echo 'Compiling Cokus (random number generator)'
Compiling Cokus (random number generator)
g++ -fpic -O2 -funroll-loops -msse3 -c src/cokus.cpp -o tempbuild/cokus.o
echo 'Compiling rfsub.f (fortran subroutines)'
Compiling rfsub.f (fortran subroutines)
gfortran   -O2 -fpic  -c src/rfsub.f -o rfsub.o
echo 'Compiling rfutils.cpp'
Compiling rfutils.cpp
g++ -fpic -O2 -funroll-loops -msse3 -c src/rfutils.cpp -o tempbuild/rfutils.o
echo 'Generating Mex'
Generating Mex
mex src/mex_ClassificationRF_train.cpp  src/classRF.cpp tempbuild/classTree.o tempbuild/rfutils.o rfsub.o tempbuild/cokus.o  -o mexClassRF_train -lgfortran -lm -DMATLAB -g
Unknown MEX argument '-o'.
make: *** [mex_classRF] Error 255

Кто-нибудь знает, как решить эту проблему? Если вы хотите, вы можете взять RF_MexStandalone-v0.02.zip по вышеуказанной ссылке, а затем перейти к randomforest-matlab/RF_Reg_C/Makefile.

Редактировать: я изменил -o на -output, но теперь вывод выглядит следующим образом:

rm twonorm_test -rf
rm  tempbuild/*.o *.o -rf
rm *~ -rf
rm *.mexw32 twonorm_test -rf
rm *.mexa64 -rf
rm classRF -rf
rm *.exe -rf
echo 'Compiling classTree.cpp'
Compiling classTree.cpp
g++ -fpic -O2 -funroll-loops -msse3 -c src/classTree.cpp -o tempbuild/classTree.o
echo 'Compiling Cokus (random number generator)'
Compiling Cokus (random number generator)
g++ -fpic -O2 -funroll-loops -msse3 -c src/cokus.cpp -o tempbuild/cokus.o
echo 'Compiling rfsub.f (fortran subroutines)'
Compiling rfsub.f (fortran subroutines)
gfortran   -O2 -fpic  -c src/rfsub.f -o rfsub.o
echo 'Compiling rfutils.cpp'
Compiling rfutils.cpp
g++ -fpic -O2 -funroll-loops -msse3 -c src/rfutils.cpp -o tempbuild/rfutils.o
echo 'Generating Mex'
Generating Mex
mex src/mex_ClassificationRF_train.cpp  src/classRF.cpp tempbuild/classTree.o tempbuild/rfutils.o rfsub.o tempbuild/cokus.o  -output mexClassRF_train -lgfortran -lm -DMATLAB -g
Building with 'g++'.
cc1plus: error: unrecognized command line option "-std=c++11"

make: *** [mex_classRF] Error 255

Я не нашел вариант -std=c++11 в make-файле.

1 ответ

Решение

Ошибка довольно очевидна: опция -o не признается Если вы печатаете mex -help вы видите варианты mex принимает. Попробуй заменить -o с -output,

РЕДАКТИРОВАТЬ относительно std=c++11 вариант, вы, вероятно, используете старую версию gcc компилятор. Вы можете изменить его на std=c++0x которая является эквивалентной опцией (но учтите, что некоторые функции стандарта C++11 могут отсутствовать \ реализована), или обновите ее до последней версии gcc,

Если вам нужна дополнительная помощь, пожалуйста, сообщите результат g++ --version,

Другие вопросы по тегам