aihot  2017-04-30 14:44:13  OpenCV |   查看评论   
       刚开始的时候,写了一个初级的Makefile,没有生成和链接静态库,没有加编译优化选项,然后发现运行起来,速度比作者的要慢很多;然后自己就加了将每个cpp文件都编译为lib*.a静态链接库,然后链接进去,发现速度还是没有提高(作者也有编译为静态库,但是我没详细去看Makefile,不知道最终的运行是否是链接静态库的);后来去看了作者的Makefile,发现作者加了gcc编译优化选项:-O3 -DNDEBUG

       先得看看这两个选项做了什么,上网搜到的如下:

        "NDEBUG"是一个标准的 ANSI宏,表示不进行调试编译。

      大多数程序和库在编译时默认的优化级别是"2"(使用"-O2"选项)并且带有调试符号来编译,也就是 CFLAGS="-O2 -g", CXXFLAGS=$CFLAGS 。事实上,"-O2"已经启用绝大多数安全的优化选项了。

 先说说"-O3""-O2"基础上增加的几项:

-finline-functions

    允许编译器选择某些简单的函数在其被调用处展开,比较安全的选项,特别是在CPU二级缓存较大时建议使用。

-funswitch-loops

    将循环体中不改变值的变量移动到循环体之外。

-fgcse-after-reload

    为了清除多余的溢出,在重载之后执行一个额外的载入消除步骤。

        同样的,我也加入了这两个编译优化选项,这时候编译运行起来速度就和作者的一样了。然后我上网搜了一下,发现"-O3""-O2"的优化选项各有利弊啊,所以我就修改为"-O2"试了一下,发现速度并没有降下来。不过我觉得作者应该是考虑到代码的一些问题,才用"-O3",我是一个菜鸟,暂时还不能理解怎么深度的问题,呵呵,所以还是按作者的先用着吧。

3、附上编译TLDMakefile文件:

CXX=g++

AR=ar

GPATH=src lib

VPATH=src lib

CPPFLAGS= -O3 -DNDEBUG `pkg-config --cflags OpenCV` -Iinclude

LDFLAGS=-Llib

LIBS=`pkg-config --libs opencv`

SLIBS=lib/libTLD.a lib/libFerNNClassifier.a lib/libLKTracker.a lib/libtld_utils.a

OBJECTS=run_tld.o

TARGET=run_tld

$(TARGET):$(OBJECTS)  $(SLIBS)

        $(CXX) $^ $(LDFLAGS) $(SLIBS) $(LIBS) -o $@

lib/libTLD.a:TLD.o

        $(AR) rc $@ $<

lib/libFerNNClassifier.a:FerNNClassifier.o

        $(AR) rc $@ $<

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自交互系统的构建之(一)重写Makefile编译TLD系统

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]