为 Matlab R2016a 编译 LIBSVM
Compiling LIBSVM for Matlab R2016a
我想在 Windows 7 64 位和 MinGW64 编译器下将 LiBSVM 与 Matlab R2016a 结合使用,预编译的 mex 文件对我不起作用。
当我尝试 运行 LibSVM 附带的标准 make 文件时,出现以下错误:
*用 'MinGW64 Compiler (C)' 构建。
使用 mex 时出错
gcc: 错误: -fexceptions: 没有那个文件或目录
*
生成文件如下所示:
mex CFLAGS="$CFLAGS -std=c99" -largeArrayDims libsvmread.c
mex CFLAGS="$CFLAGS -std=c99" -largeArrayDims libsvmwrite.c
mex CFLAGS="$CFLAGS -std=c99" -I.. -largeArrayDims svmtrain.c ../svm.cpp svm_model_matlab.c
mex CFLAGS="$CFLAGS -std=c99" -I.. -largeArrayDims svmpredict.c ../svm.cpp svm_model_matlab.c
在另一个对 Whosebug 问题的回答中,我看到有人使用这段代码进行编译:
mex -O -largeArrayDims libsvmread.c
mex -O -largeArrayDims libsvmwrite.c
mex -O -I.. -largeArrayDims svmtrain.c ../svm.cpp svm_model_matlab.c
mex -O -I.. -largeArrayDims svmpredict.c ../svm.cpp svm_model_matlab.c
这也适用于我。这两种编译 LibSVM 的方式有什么区别,使用第二种方式有什么缺点吗?
编辑:
这是我提到的问题:http://ch.mathworks.com/matlabcentral/newsreader/view_thread/297195
在做了更多研究之后,我了解到 -std=c99 选择了一个 c 语言版本,该版本在 windows 下没有为 gcc 完全实现,而 -O 优化了目标代码。在 http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f213 中,开发人员提到他们实际上没有使用任何 c99 语言功能。
所以编译库应该没有缺点吧?
"error: -fexceptions: No such file or directory."也可以通过将CFLAGS改成COMPFLAGS来解决。
我想在 Windows 7 64 位和 MinGW64 编译器下将 LiBSVM 与 Matlab R2016a 结合使用,预编译的 mex 文件对我不起作用。 当我尝试 运行 LibSVM 附带的标准 make 文件时,出现以下错误: *用 'MinGW64 Compiler (C)' 构建。 使用 mex 时出错 gcc: 错误: -fexceptions: 没有那个文件或目录 * 生成文件如下所示:
mex CFLAGS="$CFLAGS -std=c99" -largeArrayDims libsvmread.c
mex CFLAGS="$CFLAGS -std=c99" -largeArrayDims libsvmwrite.c
mex CFLAGS="$CFLAGS -std=c99" -I.. -largeArrayDims svmtrain.c ../svm.cpp svm_model_matlab.c
mex CFLAGS="$CFLAGS -std=c99" -I.. -largeArrayDims svmpredict.c ../svm.cpp svm_model_matlab.c
在另一个对 Whosebug 问题的回答中,我看到有人使用这段代码进行编译:
mex -O -largeArrayDims libsvmread.c
mex -O -largeArrayDims libsvmwrite.c
mex -O -I.. -largeArrayDims svmtrain.c ../svm.cpp svm_model_matlab.c
mex -O -I.. -largeArrayDims svmpredict.c ../svm.cpp svm_model_matlab.c
这也适用于我。这两种编译 LibSVM 的方式有什么区别,使用第二种方式有什么缺点吗?
编辑: 这是我提到的问题:http://ch.mathworks.com/matlabcentral/newsreader/view_thread/297195 在做了更多研究之后,我了解到 -std=c99 选择了一个 c 语言版本,该版本在 windows 下没有为 gcc 完全实现,而 -O 优化了目标代码。在 http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f213 中,开发人员提到他们实际上没有使用任何 c99 语言功能。 所以编译库应该没有缺点吧?
"error: -fexceptions: No such file or directory."也可以通过将CFLAGS改成COMPFLAGS来解决。