zoukankan      html  css  js  c++  java
  • 把 MPP Sample 编译成动态库

    MPP文件结构

    mpp
        \ component 开发摄像头isp图像算法
        \ ko 一些编译好的或存放待编译的驱动模块
        \ lib 媒体框架api库
        \ sample 媒体应用开发示例 一般做媒体应用开发直接到sample中,套用文件组织结构就可以了
        \ tools 调用api的工具例子
    
    sample
        \common 公共源文件,媒体开发一般都会包括这些
        \venc 一个视频流编码的例子工程,其他例子不再列出
            \Makefile 用于设定自定义的编译参数值,也并没有具体的编译规则
        \ Makefile 这个文件并没有实质编译规则内容,主要起到选择编译那个文件夹的作用,如果添加了自己的文件夹,直接相应添加即可。
        \Makefile.param 这个是全局的默认编译参数,适用于同路径下的所以工程,通常要被工程文件下的Makefile首先包含
        \up_linux.mak 这个就是编译规则文件,也用于同路径下的所以工程,通常由工程文件下的Makefile最后包含
    

    分析编译规则

    规则关键语句如下

    $(TARGET):$(COMM_OBJ) $(OBJS)
    	@$(CC) $(CFLAGS) -lpthread -lm -o $(TARGET_PATH)/$@ $^ -Wl,--start-group $(MPI_LIBS) $(SENSOR_LIBS) $(AUDIO_LIBA) $(REL_LIB)/libsecurec.a -Wl,--end-group
    
    

    其中$(COMM_OBJ)为公共源文件的.o文件(源码路径./common),$(OBJS)为工程目录中Makefile指定的源文件,也就是自己的工程代码,除了这个变量和$(TARGET)外,其他变量值主要来源于includeMakefile.param中的代码。这行规则主要是把所有的公共文件和工程文件编译成应用程序, -Wl,--start-group用于指定连接的静态库,$(CFLAGS)指定编译选项。

    这些工程Makefile中都通过include相对路径相互联系,只要套用这个工程文件组织架构添加工程编译就不会有错。但当开发资料在外部保存,并不放到这个文件结构里,那么把mpp这堆东西编译成动态库好了。

    编写编译规则

    在sample路径下新建目录buildso,并新建Makefile填如下内容

    include ../Makefile.param
    
    TARGET := libmpp.so
    TARGET_PATH := .
    
    CFLAGS += $(COMM_INC)
    
    .PHONY : so clean
    so: $(TARGET)
    $(TARGET):$(COMM_OBJ)
    	$(CC) -fPIC -shared $(CFLAGS) -o $(TARGET_PATH)/$@ $^ -Wl,--start-group $(MPI_LIBS) $(SENSOR_LIBS) $(AUDIO_LIBA) $(REL_LIB)/libsecurec.a -Wl,--end-group
    
    clean:
    	@rm -f $(TARGET_PATH)/$(TARGET)
    	@rm -f $(OBJS)
    	@rm -f $(COMM_OBJ)
    

    这里还是需要通过include ../Makefile.param取获取一些默认的参数值,当mpp完成配置并编译成库动态库后,mpp对于自己的工程就是一个独立外部组件,只要配置好交叉编译工具链,指定一下mpp/includecommon这两个头文件路径,就可以进行相对独立的开发了。

  • 相关阅读:
    关于unity的一个不错的插件平台
    erlang otp中的socket参数设置
    android开发国内镜像
    composer中文镜像
    bootstrap的一些资源
    根据现有表操作基于active record的model
    Erlang Web 监控工具
    erlang程序发布的时候需要注意的地方
    pcl学习笔记(二):点云类型
    c++中inline函数的意义
  • 原文地址:https://www.cnblogs.com/llil/p/14443668.html
Copyright © 2011-2022 走看看