|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB的官网上可以看到,R2018b已经支持使用xcode10.+ 进行混合编译。于是卸载,重装了matlabR2018b,还是这个问题。。- y9 E1 }) F( u, R2 I* F
1 t4 _ Q8 `& P) N, ^! F
尝试在MATLAB中输入mex -setup,仍然会报错找不到支持的编译器。搜索了网上很多文章都不行。我的系统是最新的macOS mojave,也就是macOSX10.14,知道这一点很重要。
7 B# |! a$ \, N! s4 w1 P) y6 I# ]$ N' k& s F7 T1 G) @" X1 h
下面的办法,是亲测可行的:' v* U* _5 u, U9 p7 D
& Y7 l% g8 A7 ~: N
首先,你要安装xcode。打开app store安装即可。现在应该很少人还用旧的了吧,一般都8+ 9+ 10+的版本,自带command line工具的。% ~9 v/ {9 R8 I4 x
! q, f2 g, ^2 g/ W" S! Q v出现这个找不到编译器的原因,是因为MATLAB找不到xcode来辅助编译。我们需要给它设置相应的路径,并且赋予权限。 K, h* U' `3 _ q, N+ N
6 R; U" d1 A4 y0 M8 U8 u' n
在MATLAB输入:
5 C Z( [" M z; n v
: V) \* ~7 L/ U# L0 `edit ([matlabroot '/bin/maci64/mexopts/maci64.xml'])5 Q4 P" f4 p* Q& E- M
; s% Z% c. T1 t0 R6 ]. f打开这个xml文件,然后更改4句话:(主要改这些地方,xml文件上面的有其他路径,别乱改)4 ~; r" e J6 F, K$ o6 s' v
1 c2 c/ ]3 m" f& m2 B: [! J
; E2 x- D! H0 l8 B$ M
2 v8 v* i+ R1 A2 Y2 D, w/ E y这4句话中的MacOSX后面的数字,是根据你的版本来的。准确的说,是你的xcode提供的SDK。
' w# F" {; W" w! w7 e2 d
, R9 w4 ~/ `& f打开finder,按住shift+command+G,进入:
7 G# q3 K: b# D, w3 k( ~' N; E$ C* {
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
5 b- R/ @8 L. w% Y6 F0 T0 Z4 C
' u: _! y$ ^; a s: I然后你就可以看到你当前xcode提供的开发sdk版本号了:
" B% o- T' l" A. J" ^3 g; ?* V& R( q( |, R8 K J0 ~4 k
( z, g% ]$ J/ ~- E
2 Z$ _1 e5 {- u3 F, _) U+ q" \
我也是从这里才知道我是10.14的。
* z3 b" A& e3 M! [9 V& O! o& J, [1 i* G" `
所以,上述xml中,只要你写对了一个路径,(有好几句话一样的)就可以了。or语句是为了匹配不同的macOS版本的。+ \2 d2 `3 V" K C
O' x. l4 B: v9 d我之前用macOSX10.10时候都没出错,升级到macOS mojave后就无法使用mex -setup,估计原因就是这个xml文件里面缺少10.14的选项!% l0 k+ y. v( v: a4 y6 w
6 E! f- i; X( N& J$ I
如果你的xml和我长得不一样,或者改乱掉了,可以先复原一下:% x' k/ O! i t2 x$ ?+ y' G
, N- o7 p5 q5 q: y* N. U* J+ }$ W8 y1 m
链接:https://pan.baidu.com/s/1nZXLf-FDogeNpHCkhWF0mg 密码:x0d9
6 J' E3 a {. z5 |1 \) K" c& t, E1 X$ d4 x7 r1 i
对了,还有可能会改了后会提示你:3 J @5 ]" R5 T
9 R9 Z+ P5 ?# q( b
- i6 ?# F/ E( H3 T# Q- g- |
- x( n, \- c# v/ ~
这是因为你还没给xcode开权限。
3 ]; H5 r, c+ S b2 \. l
! z1 a3 d; y! ^& K# E+ F解决方法是:打开终端,输入:. S2 q0 g3 Q; t- J/ e5 D0 E
0 Y1 w9 |' Z* f$ z4 V$ I
sudo xcode-select -switch /Applications/Xcode.app% T' P' b, n9 ~8 g' L5 v
3 V$ [+ `# p$ o* x: e* Y然后输入一下电脑密码。OK!
7 j1 o) p) I. T4 W( \7 F. w
& Q7 q5 p4 i4 B: `# u& y. B* L& E. N除了上述的xml,还有另一个:clang++_maci64.xml,一样的方法,打开,并修改相应位置。
: U/ d c: Q$ \7 K. j# X0 B
" F5 b3 {% p) H8 O( }: P重启MATLAB,再试一下咯!
4 C2 E* T: r8 D$ N
0 v% m$ O) d1 A3 V+ \按照上面步骤操作后,matlab就可以使用混合编译啦!这对使用第三方库,比如著名的libsvm而言,是非常重要的前提步骤。
N$ g- r" P! O. j8 P2 {# \: ?. V
) [, i$ n8 S( |- ?- o- N7 ]/ v0 ]Good luck!* ~$ Z+ k y8 A$ q5 c
" r( Z" B1 s4 G% Y1 M5 q
% K; R4 B. K' D& V: @7 ^
7 l- \0 ], ?& O! R |
|