|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB的官网上可以看到,R2018b已经支持使用xcode10.+ 进行混合编译。于是卸载,重装了matlabR2018b,还是这个问题。。& p# g* @! |& `: y
0 n* T/ ~: J( \4 C' |
尝试在MATLAB中输入mex -setup,仍然会报错找不到支持的编译器。搜索了网上很多文章都不行。我的系统是最新的macOS mojave,也就是macOSX10.14,知道这一点很重要。9 r S$ J- s U n: ~- f
5 m# t- J+ F c2 T! C6 k+ ~下面的办法,是亲测可行的:
2 N7 Q* ]' b) O: u
0 k$ M! O6 m6 ^' N2 A8 ?首先,你要安装xcode。打开app store安装即可。现在应该很少人还用旧的了吧,一般都8+ 9+ 10+的版本,自带command line工具的。
# |) ]- u* V# e" C, J
1 h4 f' [/ e4 x m7 ~# X出现这个找不到编译器的原因,是因为MATLAB找不到xcode来辅助编译。我们需要给它设置相应的路径,并且赋予权限。
1 b! v8 d0 Z% U: }) I3 V8 O/ v/ k& W
在MATLAB输入:
9 k" L5 \3 x5 @+ w# Y- J5 {& S, o% [% w, n
edit ([matlabroot '/bin/maci64/mexopts/maci64.xml'])
4 n! G9 d$ G& x: ] t8 d; a+ _
8 Y' r' E! t( E, Q7 R; N打开这个xml文件,然后更改4句话:(主要改这些地方,xml文件上面的有其他路径,别乱改)$ I. ~' X4 r& w2 B B/ T
T( P" t9 Z6 E7 r4 ^2 y2 b* \) K) Y: D
' m; b4 z/ ]' {8 R5 h5 Q' V2 c/ h; X! d1 Q7 M' ~. h
这4句话中的MacOSX后面的数字,是根据你的版本来的。准确的说,是你的xcode提供的SDK。
4 g6 K2 n6 {, m. y6 p2 z0 v' `, |5 ]' v9 M
打开finder,按住shift+command+G,进入:
) _: _% a5 b/ n+ t f
2 g$ j& |8 o+ | ]6 L1 Q/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs; G1 q6 a* Q+ I: x" n5 ^; s/ d% q
" p4 M+ y5 q$ `5 e然后你就可以看到你当前xcode提供的开发sdk版本号了:
m0 {. t& [1 S. l) J
/ B) p/ Y& A- \' D! o2 r9 Y* k }. J
0 j2 m7 w1 P1 ]" Z( U4 `1 e: g6 J3 o G
我也是从这里才知道我是10.14的。
! R k8 D1 ], A
* p6 y/ k* x* I- y; R3 _1 l所以,上述xml中,只要你写对了一个路径,(有好几句话一样的)就可以了。or语句是为了匹配不同的macOS版本的。
2 g" {: P0 M; i" j7 F
1 B: x! o# b( l3 \3 q我之前用macOSX10.10时候都没出错,升级到macOS mojave后就无法使用mex -setup,估计原因就是这个xml文件里面缺少10.14的选项!& n. O) S z; q/ W O' Z/ f5 M
, l# F# u2 g7 E7 T: A4 D& @
如果你的xml和我长得不一样,或者改乱掉了,可以先复原一下:
1 s0 ]3 z: f$ ?) s4 S! Q8 o1 U% U' V0 Q) w# s0 ` ^& X' B, t
链接:https://pan.baidu.com/s/1nZXLf-FDogeNpHCkhWF0mg 密码:x0d9
' R! f$ \% @- }0 n. S2 W$ w8 J" o# o& F* T
对了,还有可能会改了后会提示你:8 t( P+ N& ]3 z" c( G7 B
* M8 o* w6 s- a$ F# y
# t5 Y0 ~5 R9 S7 J' ?) I: J" C0 c" L E$ F
这是因为你还没给xcode开权限。
: j$ M" H, i: C! Q& z1 V% j
* E% n3 u+ n8 _. Z) ^解决方法是:打开终端,输入:
$ x# A! _" W8 o5 r% V$ Y2 w/ j- D0 J/ D" ~7 ?& \$ d' p
sudo xcode-select -switch /Applications/Xcode.app
m% d" M4 Z8 @! {" H
: }# S/ G4 O8 Q然后输入一下电脑密码。OK!+ ~ j+ c. }1 w0 j3 P5 c' A
' b( t( C5 e, D9 Y7 |# U除了上述的xml,还有另一个:clang++_maci64.xml,一样的方法,打开,并修改相应位置。
3 y1 u! ?) ]' B
0 _& G2 X& c0 z p' {' I重启MATLAB,再试一下咯!
& C) s7 v$ [& k0 B8 P" z& \* r; k% n) L! |6 M- f/ f
按照上面步骤操作后,matlab就可以使用混合编译啦!这对使用第三方库,比如著名的libsvm而言,是非常重要的前提步骤。
9 a- c8 M; \ j
: m: m! C! a7 ^Good luck!
! A* @, P0 Z! a" W2 e% h! C6 M
- Z7 j9 ]( i! `
- ]4 e4 p Q% P9 I) E5 c3 y& c/ X( a
|
|