|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB的官网上可以看到,R2018b已经支持使用xcode10.+ 进行混合编译。于是卸载,重装了matlabR2018b,还是这个问题。。: T3 A; |2 \ L. |
4 D% e/ p( x. \8 m3 ?. j h/ G8 f尝试在MATLAB中输入mex -setup,仍然会报错找不到支持的编译器。搜索了网上很多文章都不行。我的系统是最新的macOS mojave,也就是macOSX10.14,知道这一点很重要。
$ @$ K4 Y9 g1 ^$ I9 r o) f% C7 _% [& E, d8 g0 o' {
下面的办法,是亲测可行的:) |# O& L! b+ {) H: y
) g5 [' u; ~, e+ p; H- a, }- D0 ^首先,你要安装xcode。打开app store安装即可。现在应该很少人还用旧的了吧,一般都8+ 9+ 10+的版本,自带command line工具的。7 m; B3 p; Z: w0 [3 f7 b3 N% T
5 `( h: }; |; ^2 ~" ?
出现这个找不到编译器的原因,是因为MATLAB找不到xcode来辅助编译。我们需要给它设置相应的路径,并且赋予权限。
% l8 l- J O, |' t4 {. H3 f
& I: h/ f! `8 H2 [# }3 Y2 f在MATLAB输入:
2 s: R1 k: q( c) S% }3 x, k9 ^* X- Z1 J% I8 z/ B% y: @
edit ([matlabroot '/bin/maci64/mexopts/maci64.xml'])+ g% N6 l" C+ R# G+ J+ U* [
9 W& H$ s" L _3 T3 h' o+ e打开这个xml文件,然后更改4句话:(主要改这些地方,xml文件上面的有其他路径,别乱改)( J. d F3 e @2 }/ M/ V D# d" X
; N/ d/ v' q, Z3 m
! c" ]5 Y% B7 p8 Q9 H0 V! x( r
- ~5 [3 W' [; h这4句话中的MacOSX后面的数字,是根据你的版本来的。准确的说,是你的xcode提供的SDK。. l5 s' l( p: L. j" O
+ D0 b1 N5 H# V; z* K
打开finder,按住shift+command+G,进入:
; ?9 {5 Z7 s- l% F" F0 x* T; B" [
( l; g$ s5 b% e" m& B/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs8 N* u" p t3 k/ P4 ]+ c5 ^+ |: O
7 l5 G1 X0 Z9 c) S+ L+ [
然后你就可以看到你当前xcode提供的开发sdk版本号了:6 X T" M4 Y: ?" a; g& g1 K
4 z3 |* m/ b% {/ ]
6 L. O; U& `4 ?
5 x. L1 Z( M! A2 A) ]我也是从这里才知道我是10.14的。
1 d s. M1 _! t. X+ {# o- c
+ d3 h$ G% t7 N9 K9 ^所以,上述xml中,只要你写对了一个路径,(有好几句话一样的)就可以了。or语句是为了匹配不同的macOS版本的。3 d3 l- B4 N6 x* t# ?$ C
; J! h2 C% y* H
我之前用macOSX10.10时候都没出错,升级到macOS mojave后就无法使用mex -setup,估计原因就是这个xml文件里面缺少10.14的选项!
a4 ~) v+ _2 P" H0 W7 R% F& }$ ^% b; X
如果你的xml和我长得不一样,或者改乱掉了,可以先复原一下:' A0 M8 g8 u$ V9 @ b# H
/ a+ ]: U' p6 D' V; s链接:https://pan.baidu.com/s/1nZXLf-FDogeNpHCkhWF0mg 密码:x0d9
0 z+ u3 z" `0 _( I$ C, W N- C0 Q0 E4 T9 r
对了,还有可能会改了后会提示你:
0 ]2 n& X! V4 r" Z8 N& O9 u4 b, f* `8 h4 B
& u& }( [) e& |* f6 _6 I+ _
9 Y. q4 B# y B) \, R2 y4 \) s, J这是因为你还没给xcode开权限。7 s% r5 j; M4 Y/ b9 E8 }- I
% f% C0 N# d# X解决方法是:打开终端,输入:; H" [" L0 Y* I& J8 ^% W
& v7 J7 a% x$ S4 L" osudo xcode-select -switch /Applications/Xcode.app
% w+ D4 p p9 V' z; H
8 O/ u1 x" O9 L Z3 K) g4 ~然后输入一下电脑密码。OK!
" a& V" y/ o' q4 Z7 O4 k6 u3 o ?5 e j* ^ [
除了上述的xml,还有另一个:clang++_maci64.xml,一样的方法,打开,并修改相应位置。
- H. A0 Z& K, l9 J
! Q9 g4 T. a' D* g$ W重启MATLAB,再试一下咯!
- c9 ]/ y9 k2 p `8 k; w5 J) e: k; c/ k% ^9 e
按照上面步骤操作后,matlab就可以使用混合编译啦!这对使用第三方库,比如著名的libsvm而言,是非常重要的前提步骤。) O7 E1 j9 W2 \4 b& T3 e1 e
1 Y/ T5 x6 C' z+ D) j
Good luck!7 D0 U/ z" c y% {5 D# E0 E) J
- w) Q4 C, [; [$ s% _7 Z5 X5 t* u. u% T. w4 W
# N6 R# k, m% f
|
|