|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
前言- i" W, b6 M' D) `% Y* E& X+ ~
最近需要用到COCO的matlab api,但是github上的master分支最近删除了maskApi.mexa64文件。一种方法当然是找找别人原来fork的cocoapi,我想自己编译生成。6 @# g) k# G1 B1 `" y
: ?, l/ n6 I* F. }2 x9 b
编译器准备
0 D; j) B. n& M- Y( |2 g5 a编译的时候需要用到mex,但是matlab 2016b支持的gcc编译器是4.9.x,而ubuntu 14.04的gcc版本是4.8.x,因此需要首先下载一下gcc 4.9 。
0 c! J- X, A& t/ L, y$ n* o Z- ?
编译
- m2 `. F! N" }3 ~设置好编译器之后,下载github上的cocoapi-master,解压,然后我们需要编译的其实是两个文件(在MatlabAPI/private目录下面):gasonMex.cpp以及maskApiMex.c
6 W' i& [ R% b5 d6 Z. h" S# x$ p: `
/ o# k/ \# a- t, M5 o' Y( Q对应的编译方法其实在MatlabAPI目录下的gason.m以及MaskApi.m中有写。( I d" R5 G8 v% r
" L: k9 b9 f: C2 I- # 编译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');% X9 B- } b5 Q4 \; ?
3 E1 G( R! R7 _; h
% p& @2 u3 [3 M% j0 c
( \- S7 S) ^5 R Y- c4 N. i
- # 编译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');/ u+ f2 C! x! R: z8 T" i9 a6 D+ B
, g4 W1 ?! m6 d4 Z: s6 K7 r. B
/ {# F" p; \ o# {; `# Y& q6 B- K+ i4 x7 y
编译的时候可能会提醒需要添加’fPIC’,直接在’-std=xxx’后面添加’-fPIC’即可。
' N3 D/ i9 C# m; b5 Y7 Q6 L; E编译完成之后,就可以生成gasonMex.mexa64以及maskApiMex.mexa64两个文件了。# _% H/ {+ ~* A0 O$ x) ?- X
4 M/ F: R. U8 u) A* w
编译完成之后记得把系统默认的gcc切换回4.8版本。1 q7 i# b' ]6 O& E% R$ n
' G/ B3 Q# Z2 w" |0 ^
# K W! h+ I# H* V
/ o4 t" ^5 d$ M2 d2 W7 V |
|