【发布时间】:2016-09-27 22:08:53
【问题描述】:
我想在带有 MinGW64 编译器的 Windows 7 64 位下将 LiBSVM 与 Matlab R2016a 一起使用,而预编译的 mex 文件对我不起作用。 当我尝试运行 LibSVM 附带的标准 make 文件时,会出现以下错误: *使用“MinGW64 编译器 (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
在另一个 stackoverflow 问题的答案中,我看到有人使用此代码进行编译:
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 语言功能。 所以编译库应该没有缺点吧?
【问题讨论】:
-
你能链接到另一个 SO 问题吗?
标签: matlab gcc libsvm mingw-w64