|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB的官网上可以看到,R2018b已经支持使用xcode10.+ 进行混合编译。于是卸载,重装了matlabR2018b,还是这个问题。。/ L, p/ }7 L( V* v5 @
2 k( B% p8 g: K' ]# y# d1 B
尝试在MATLAB中输入mex -setup,仍然会报错找不到支持的编译器。搜索了网上很多文章都不行。我的系统是最新的macOS mojave,也就是macOSX10.14,知道这一点很重要。
) g8 \) z6 P+ I1 C9 V; v
( w3 D' @ F6 t/ ^ `. t下面的办法,是亲测可行的:, B: X( K" U/ `% u% X: u( N* Q" h7 Z5 D
/ r' s" }# A- |& q1 R9 c- f
首先,你要安装xcode。打开app store安装即可。现在应该很少人还用旧的了吧,一般都8+ 9+ 10+的版本,自带command line工具的。
* c w9 v, g3 r! I& R" p. o0 d6 y' l! P8 p% S
出现这个找不到编译器的原因,是因为MATLAB找不到xcode来辅助编译。我们需要给它设置相应的路径,并且赋予权限。
3 @! |) J3 o2 X7 ?$ X1 ]+ ?. S- t$ S9 B
在MATLAB输入:$ s/ y% \- ` H/ t
( U; g! j V5 [2 B" N" w* A7 _) wedit ([matlabroot '/bin/maci64/mexopts/maci64.xml'])9 _! i, u) D$ _4 t* s4 ?) }
: F- y! O5 y* S
打开这个xml文件,然后更改4句话:(主要改这些地方,xml文件上面的有其他路径,别乱改)5 x5 a, R) o# ?3 \- Y
$ y- i& k4 T L/ W$ U
( H" l8 `: d8 m$ S2 f+ ^: p( |2 ]
1 G3 Y4 R8 S& t6 [- o; x! a这4句话中的MacOSX后面的数字,是根据你的版本来的。准确的说,是你的xcode提供的SDK。
% a$ q4 r9 w5 H1 y- q
# h9 O8 s+ y1 s# _* u打开finder,按住shift+command+G,进入:
5 m" X' ]- }, i _
2 s% q/ s0 f9 m$ N/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs. S" A, N3 ^. b* R) o$ s
# V# N; b3 `" @# q S9 R然后你就可以看到你当前xcode提供的开发sdk版本号了:
) |! l3 p/ y7 H/ i: a/ e4 a/ Z! n- o- G2 M1 o
6 x- a1 ]1 I% \( V V: y2 s( A
, v3 H3 U, B+ v7 N- M/ n: ~' Z
我也是从这里才知道我是10.14的。
7 R0 p" @$ v+ H1 u6 Q- v7 v6 z$ V8 t# z4 s+ |' v. U% j
所以,上述xml中,只要你写对了一个路径,(有好几句话一样的)就可以了。or语句是为了匹配不同的macOS版本的。; o _0 K/ Q0 T% i" l. l
6 z' }/ R3 N/ v( P& W) F! p我之前用macOSX10.10时候都没出错,升级到macOS mojave后就无法使用mex -setup,估计原因就是这个xml文件里面缺少10.14的选项!
( f* @: l8 }, V U; H9 C1 @# k+ g9 X" z+ t0 v# G5 D1 r2 G
如果你的xml和我长得不一样,或者改乱掉了,可以先复原一下:
4 A6 y I" R" h, u6 K& q Y& L% O! G1 W" b9 E+ n" F0 l3 [% T# }
链接:https://pan.baidu.com/s/1nZXLf-FDogeNpHCkhWF0mg 密码:x0d99 w5 L) D; x3 W N1 T& A4 d' f
6 ?0 ]" }5 t; B$ d! t# W对了,还有可能会改了后会提示你:
% m! S; j! D' v' d! {# j" R! n8 i6 g8 T8 Q
, U( n' ~$ {& H4 w1 @# D
, k: d9 g8 _: Y X) Q
这是因为你还没给xcode开权限。) F/ y e- L, ?* ^0 _/ P
/ c$ t) _" z" o! u/ y解决方法是:打开终端,输入: l2 e" O9 q9 s/ W
8 I, R1 }5 A, f- lsudo xcode-select -switch /Applications/Xcode.app
8 y6 W ^5 P9 {; N2 A2 X
, x# m% r( a3 M* d& m# D! o8 ^然后输入一下电脑密码。OK!
4 o: O6 b1 e2 I: B$ g
/ w2 e/ }4 D [9 \* K! @除了上述的xml,还有另一个:clang++_maci64.xml,一样的方法,打开,并修改相应位置。
5 p0 ~! N( {0 W% ?* t" g0 n/ |+ ^" \4 r+ q& N% I- q* w( F
重启MATLAB,再试一下咯!, P7 `# k0 q( ` k- n% m7 F
7 p9 f7 B' v0 N$ R按照上面步骤操作后,matlab就可以使用混合编译啦!这对使用第三方库,比如著名的libsvm而言,是非常重要的前提步骤。5 I- [5 @$ o% `: u& ?+ C/ E3 @4 f
) p# ~2 l' X' G# aGood luck!
, q' U' N$ Z8 }0 i$ a; d* {) A4 O6 K9 F: b+ x( s
I+ C, [" q: K q6 ~1 L" l$ n5 D
1 [4 t8 u! u% P |
|