|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
前言
3 h- k7 w8 u' p+ G9 h) o' L1 u) m最近需要用到COCO的matlab api,但是github上的master分支最近删除了maskApi.mexa64文件。一种方法当然是找找别人原来fork的cocoapi,我想自己编译生成。( S: N4 J- T- U4 |4 G8 e
- V( H5 p$ M1 }/ D* o! u* h编译器准备
# S3 ~, W9 u: Z1 s' R- Y编译的时候需要用到mex,但是matlab 2016b支持的gcc编译器是4.9.x,而ubuntu 14.04的gcc版本是4.8.x,因此需要首先下载一下gcc 4.9 。
; J* ], r/ n3 C" Y9 l4 m8 |( @/ R# U, C: u; O/ [) D [7 v5 U, R
编译
' @% d4 B f. w$ p% ?2 D设置好编译器之后,下载github上的cocoapi-master,解压,然后我们需要编译的其实是两个文件(在MatlabAPI/private目录下面):gasonMex.cpp以及maskApiMex.c/ {1 X2 c) O, R2 |, }' {
( G' @. T# l T' O+ I
对应的编译方法其实在MatlabAPI目录下的gason.m以及MaskApi.m中有写。
" ^# g! C4 O( A9 T d* E: z9 ~0 R5 B C
- # 编译gason.cpp文件,把CXXFLAGS换成g++-4.9的目录,比如/usr/bin/g++-4.9
- mex('CXXFLAGS=\$CXXFLAGS -std=c++11 -Wall','-largeArrayDims',...
- 'private/gasonMex.cpp','../common/gason.cpp',...
- '-I../common/','-outdir','private');( z# d' n! r. Z) y
) ^1 |. N5 P' p4 X. F
: C0 f$ ]; X% v6 l$ B8 w
% K! D3 t, C5 d. r: y/ F! B8 }- # 编译maskApi.c文件, 把CFLAGS换成gcc-4.9的目录,比如/usr/bin/gcc-4.9
- mex('CFLAGS=\$CFLAGS -Wall -std=c99','-largeArrayDims',...
- 'private/maskApiMex.c','../common/maskApi.c',...
- '-I../common/','-outdir','private');& V, K/ X3 ?, m. C
9 F5 t3 B( |0 f& D& ~; I
' u/ }/ ]/ r: ]! e7 E Q: v. m
3 I- c7 s* n4 t! w' r0 g/ I$ n0 g
编译的时候可能会提醒需要添加’fPIC’,直接在’-std=xxx’后面添加’-fPIC’即可。
0 {7 i0 K. K% N% `4 n: i& E编译完成之后,就可以生成gasonMex.mexa64以及maskApiMex.mexa64两个文件了。6 w* z% i) x5 r$ H
6 z) {. d8 |5 H R+ A编译完成之后记得把系统默认的gcc切换回4.8版本。1 Y% u0 Y- S* t3 F
- Q( g, \5 l6 |& ~) b7 p! T0 B0 s
: N% F! R) y: D
6 a) b: r0 @( w3 b( O |
|