Ubuntu 14.04+MatlabR2016b 編譯COCO matlab API
前言
最近需要用到COCO的matlab api,但是github上的master分支最近刪除了maskApi.mexa64檔案。一種方法當然是找找別人原來fork的cocoapi,我想自己編譯生成。
編譯器準備
編譯的時候需要用到mex,但是matlab 2016b支援的gcc編譯器是4.9.x,而ubuntu 14.04的gcc版本是4.8.x。因此需要首先下載一下gcc 4.9
具體步驟見部落格 https://blog.csdn.net/yile0000/article/details/80105625
編譯
設定好編譯器之後,下載github上的cocoapi-master,解壓,然後我們需要編譯的其實是兩個檔案(在MatlabAPI/private目錄下面):gasonMex.cpp以及maskApiMex.c
對應的編譯方法其實在MatlabAPI目錄下的gason.m以及MaskApi.m中有寫。
# 編譯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');
# 編譯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');
編譯的時候可能會提醒需要新增’fPIC’,直接在’-std=xxx’後面新增’-fPIC’即可。
編譯完成之後,就可以生成gasonMex.mexa64以及maskApiMex.mexa64兩個檔案了。
編譯完成之後記得把系統預設的gcc切換回4.8版本。