|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB的官网上可以看到,R2018b已经支持使用xcode10.+ 进行混合编译。于是卸载,重装了matlabR2018b,还是这个问题。。. k0 B9 O% c, u6 ~1 H" N- `& ?
2 W0 ~- x: X0 ^ H! Y5 j* ~尝试在MATLAB中输入mex -setup,仍然会报错找不到支持的编译器。搜索了网上很多文章都不行。我的系统是最新的macOS mojave,也就是macOSX10.14,知道这一点很重要。0 {1 A7 n2 Z4 ?# |2 T
3 _) C, i5 P% ?
下面的办法,是亲测可行的:
2 \( f. `4 r x8 t8 j; S0 C, f/ Y! N, r; i/ M
首先,你要安装xcode。打开app store安装即可。现在应该很少人还用旧的了吧,一般都8+ 9+ 10+的版本,自带command line工具的。
2 L- Y/ M/ T# a7 |7 x; f! o/ V4 F& @+ h& T" T7 X5 t0 \
出现这个找不到编译器的原因,是因为MATLAB找不到xcode来辅助编译。我们需要给它设置相应的路径,并且赋予权限。& t4 t/ Y; v/ K, ~
. I7 F! @. e: `9 K在MATLAB输入:
/ y/ q% \0 J3 [* w+ r$ d7 q5 n! e; x8 Y) f/ B
edit ([matlabroot '/bin/maci64/mexopts/maci64.xml'])& c0 K {7 W {
4 ~5 K9 V( m$ M9 K9 O0 g/ b打开这个xml文件,然后更改4句话:(主要改这些地方,xml文件上面的有其他路径,别乱改): h8 q; K5 m; B# F, y
3 W2 n3 s. w/ \0 ?- F6 ^% N, x& l
6 M6 s7 Q; y, \- \* e* n
- M4 n' Z( x o# z这4句话中的MacOSX后面的数字,是根据你的版本来的。准确的说,是你的xcode提供的SDK。
! P7 B& n6 n; @" {* g) J- q5 \( Q0 S. z* `8 M- {2 O. z- W
打开finder,按住shift+command+G,进入:
' q7 u8 B2 P" i: Q t
' O0 `" U7 o) V/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
: R. {. q' G8 j% j6 V4 p! F! T
; X4 o; K+ R1 v1 D' i$ A然后你就可以看到你当前xcode提供的开发sdk版本号了:
, `+ j- P$ o8 P7 R- G! P8 K$ s7 C6 G& F2 C0 s3 U. D5 k! a
2 K0 n, S4 o$ H0 C5 S
1 n# _; c( N& O5 s8 L我也是从这里才知道我是10.14的。
+ x6 p4 h; d4 J% a$ b7 |7 `
$ }( V F- r/ l/ t t) b: D所以,上述xml中,只要你写对了一个路径,(有好几句话一样的)就可以了。or语句是为了匹配不同的macOS版本的。 |* Z* p1 P, H' z3 f4 X5 m
+ m/ Z# z0 I6 ^3 C7 Y我之前用macOSX10.10时候都没出错,升级到macOS mojave后就无法使用mex -setup,估计原因就是这个xml文件里面缺少10.14的选项!
2 K. K# a1 p0 {6 \$ G0 z% _7 v: `" G! R+ }1 I1 m9 j m3 _% Z. h
如果你的xml和我长得不一样,或者改乱掉了,可以先复原一下:
' o0 Z% E! l1 B( M. I, t7 Q, O2 e6 e! R0 `3 X: O2 i
链接:https://pan.baidu.com/s/1nZXLf-FDogeNpHCkhWF0mg 密码:x0d9
& _8 _) P: | s3 d9 u' }1 W* y( }5 n7 r0 |' ]+ y+ f4 \
对了,还有可能会改了后会提示你:
3 r- l4 h a( b% w+ m# v$ U7 @
$ {0 R6 z) r7 r9 h
5 F C1 x7 C5 n这是因为你还没给xcode开权限。2 P4 U& _8 ^& I: X+ r
, v4 K! i, ~8 E( N8 w* A3 Q# p
解决方法是:打开终端,输入:0 r9 h6 G. X2 [5 G3 X4 G
) v6 E7 t, j8 H4 u: M
sudo xcode-select -switch /Applications/Xcode.app
E: Z4 ?4 e# W; |
/ |, Y8 N5 k Q0 E+ Z然后输入一下电脑密码。OK!7 J9 B. A6 J# X. T% F! V
2 G5 S/ _( d/ g& W- f$ u
除了上述的xml,还有另一个:clang++_maci64.xml,一样的方法,打开,并修改相应位置。* X. Z: M2 X" w
6 m( ?+ C O; h8 R重启MATLAB,再试一下咯!
( n; {; c' ?" I+ _2 }) L, T
- }+ Z, _4 i8 v0 c; S. Q按照上面步骤操作后,matlab就可以使用混合编译啦!这对使用第三方库,比如著名的libsvm而言,是非常重要的前提步骤。* K$ C2 S! f8 [9 ?; Z5 B
) G1 W' G. r: W) f9 bGood luck!
( E1 i% u& q* d0 }8 o- [ w
: z9 T% f! I$ _" d0 J+ t
! R0 F/ D0 N& r
2 r& A ~0 K ?5 v7 n5 D |
|