[软件安装] libsvm for matlabR2012b on Mac OSX 10.9

来源:互联网 发布:vb语言和java 编辑:程序博客网 时间:2024/05/27 16:40

课程要用Libsvm,本来打算用Python来装,但老师给了Matlab程序,自己又懒,不想重写代码,就打算装在Matlab上。

真没想到一下午就全用来安这个东西了。

Matlab以及OSX版本

matlab用的是MatlabR2012b for mac
OSX是Mac OS X 10.9.5

各种错误的艰辛历程

libsvm里自带了Windows下面Matlab的二进制代码libsvmread.mexw64,想要在Matlab for Mac上跑,需要自己重新编译。

编译很简单,只要在libsvm/matlab下面make就好了

1

第一次按下make

>> cd matlab>> make/Applications/MATLAB_R2012b.app/bin/mex: line 305: llvm-gcc-4.2: command not found/Applications/MATLAB_R2012b.app/bin/mex: line 1326: llvm-gcc-4.2: command not found    mex: compile of ' "libsvmread.c"' failed.If make.m fails, please check README about detailed instructions.

网上查到的关于这个错误的应对方法大多脱胎于Can I use Simulink Accelerator/Rapid Accelerator modes and code generation products on a Mac with Xcode 4.2 or higher?。

但这个是给OSX 10.8或之前的版本的用的,现在以及不管用了。

正确方法:

打开mexopts.sh:

$ vi ~/.matlab/R2012b/mexopts.sh

第162~164行改成:

CC='gcc'CXX='g++'SDKROOT='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk'                                MACOSX_DEPLOYMENT_TARGET='10.9'

2

第二次make

>> makeConfigured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1    mex:  libsvmread.c  not a normal file or does not exist.If make.m fails, please check README about detailed instructions.

这次是因为缺少一个文件mex.h,它应该在/Applications/MATLAB_R2012b.app/extern/include里面有,但是也不知道是因为版本还是因为什么其他原因,我的文件夹里面没有,所以我从一个也装了Matlab的Window笔记本上把include文件夹里所有文件都复制过来。

3

第三次make

>> makeConfigured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1In file included from /Applications/MATLAB_R2012b.app/extern/include/mex.h:58:In file included from /Applications/MATLAB_R2012b.app/extern/include/matrix.h:294:/Applications/MATLAB_R2012b.app/extern/include/tmwtypes.h:819:9: error: unknown type name 'char16_t'typedef char16_t CHAR16_T;

把错误所在行的

typedef char16_t CHAR16_T;

改为

typedef UINT16_T CHAR16_T;

小众操作系统就是这么烦……

0 0