|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB的官网上可以看到,R2018b已经支持使用xcode10.+ 进行混合编译。于是卸载,重装了matlabR2018b,还是这个问题。。
3 s) A& x$ v8 i
/ @" H+ _- t7 S) ?0 L2 o T尝试在MATLAB中输入mex -setup,仍然会报错找不到支持的编译器。搜索了网上很多文章都不行。我的系统是最新的macOS mojave,也就是macOSX10.14,知道这一点很重要。
; p( I$ A" f; V* l' I
, ^* g+ v! Z( t& L0 O2 P- x下面的办法,是亲测可行的:7 w! U) i. k9 h" \
& e7 o; d5 I6 y% W# F
首先,你要安装xcode。打开app store安装即可。现在应该很少人还用旧的了吧,一般都8+ 9+ 10+的版本,自带command line工具的。3 } I! d+ n2 u7 Y2 Z( g
9 I# b J5 _& L2 {& `
出现这个找不到编译器的原因,是因为MATLAB找不到xcode来辅助编译。我们需要给它设置相应的路径,并且赋予权限。! s; S' \4 P$ ~! f1 X( g1 \ P
- `1 y1 `" K% L2 A在MATLAB输入:
2 J* W. J4 q0 T; N* D& Z6 N2 m
( z. l& ~% R4 O/ Tedit ([matlabroot '/bin/maci64/mexopts/maci64.xml'])2 C! m# |( q! z; |
1 h: F( s* T, v0 B8 \9 s. a# _9 h
打开这个xml文件,然后更改4句话:(主要改这些地方,xml文件上面的有其他路径,别乱改)& I5 N0 ~3 f5 H/ U
3 s% B0 a1 G' x- A$ `# c; g
' A/ t5 ?7 l4 `: \1 x- J/ u$ N( y! x3 T0 ^, a
这4句话中的MacOSX后面的数字,是根据你的版本来的。准确的说,是你的xcode提供的SDK。& @3 H) J2 }4 _4 f% b3 ?
6 r3 f, m$ Y" R打开finder,按住shift+command+G,进入:
) d: l9 J( @7 `% D
' Z. W q& X& z. q/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
. z7 ?* H" z. Y" E% r0 s
* v! S. u8 c) J' {然后你就可以看到你当前xcode提供的开发sdk版本号了:
* t3 z. l% B4 [1 i& ^
$ l6 U5 s7 j: d& Y: n
* _3 ~+ n. x& {
) r7 |9 o, A8 h) s% Q( G6 L我也是从这里才知道我是10.14的。
& x0 w" F6 J/ O% ~1 E w$ z, ]2 J% V( u% A6 x% p, n
所以,上述xml中,只要你写对了一个路径,(有好几句话一样的)就可以了。or语句是为了匹配不同的macOS版本的。
2 K! K' C8 G& g2 q6 S
0 j; T9 Z! A h8 z7 p. x我之前用macOSX10.10时候都没出错,升级到macOS mojave后就无法使用mex -setup,估计原因就是这个xml文件里面缺少10.14的选项!8 `$ q$ z v3 H0 |3 H; v/ \5 D
1 Y! R* u3 V! m9 q: b
如果你的xml和我长得不一样,或者改乱掉了,可以先复原一下:
* p. { u& h: M8 U7 r/ t- z
+ p$ l- D5 u! r+ e# h& C% X7 S, x链接:https://pan.baidu.com/s/1nZXLf-FDogeNpHCkhWF0mg 密码:x0d9, U! j" H( B g- Z/ q0 `3 _) s
7 D. U# E9 o8 s
对了,还有可能会改了后会提示你:" w" M, w+ U: g
6 e. W) X* z9 m: Y+ v
5 r. K' [0 \5 L# x8 W" X; N8 R0 i% p0 ]& L+ d9 V) I! A
这是因为你还没给xcode开权限。
6 l0 j1 T8 s9 H# K
) m! _5 \9 x+ s$ V9 H解决方法是:打开终端,输入:- ~$ K2 n5 g! X/ d% l. h
6 x B. \( s, | K* Q0 o1 ?
sudo xcode-select -switch /Applications/Xcode.app# K P# I( ?. m+ l' A$ ?- q
9 A/ ~$ b8 N* o2 ?- H- C7 @然后输入一下电脑密码。OK!) D+ j/ ?# v2 {3 V; C7 a" i
- M2 E6 M* g- q4 \, O
除了上述的xml,还有另一个:clang++_maci64.xml,一样的方法,打开,并修改相应位置。
4 R/ z+ @& p* I" b8 O! _7 l. I+ [/ F0 U8 y
重启MATLAB,再试一下咯!- q& ^" `8 c* i* N, D9 F
, F; G) f3 ]. ~ p/ @& h
按照上面步骤操作后,matlab就可以使用混合编译啦!这对使用第三方库,比如著名的libsvm而言,是非常重要的前提步骤。# m7 ^* f+ ]# p( m; l
4 A% ~8 p, j. L$ |# D$ ^' l" B( zGood luck!& }' @& O$ b1 i
' y5 o6 E* {0 s: {8 \# Y
7 m$ g5 Q4 }' W' \8 D7 n- H
' s; h; ^+ W+ N" f2 t. u |
|