Hi3516DV300 Cmake工程建立教程
Hi3516DV300 Cmake工程建立教程
- 一、准备事项
- 二、建立基本的Cmake工程
- 三、提取SDK完善Cmake工程
- 四、编译与调试
- 五、总结
一、准备事项
1.以默认路径安装交叉编译器arm-himix200-linux.
2.解压SDK Hi3516CV500_SDK_V2.0.2.0.
3.板子运行程序前需加载好驱动。
二、建立基本的Cmake工程
如下图所示,建立基本的Cmake工程。
1.bin目录用于放编译生成的可执行文件。
2.build目录用于编译。
3.include目录用于放SDK的头文件。
4.lib目录用于放库文件。
5.src目录则用于放SDK的.c文件。
6.CMakeLists.txt为Cmake文件。
三、提取SDK完善Cmake工程
以编译sample vio为例完善Cmake工程。
1.添加头文件、库文件、以及common目录和sample/vio目录下的文件
注意:如果代码存在目录文件夹的,需要复制出来,include以及src目录下不放其他文件夹。
添加文件之后的Cmake工程如下图所示。
2.编写CMakeLists.txt文件
工程目录下的CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)
SET(TOOLCHAIN_DIR /opt/hisi-linux/x86-arm/arm-himix200-linux)
SET(CMAKE_C_COMPILER /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc)
SET(CMAKE_CXX_COMPILER /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-g++)
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR}${TOOLCHAIN_DIR}/arm-himix200-linux/include${TOOLCHAIN_DIR}/arm-himix200-linux/lib )SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)PROJECT(Hi3516CV500_SDK_V2.0.2.0_MPP_Sample)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ")
INCLUDE_DIRECTORIES(include)
add_subdirectory(src)
src目录下的CMakeLists.txt
aux_source_directory (. SRC_LIST)add_executable (EXEC_MPP_SAMPLE ${SRC_LIST})set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/lib)target_link_libraries(EXEC_MPP_SAMPLE pthread dl m)
3.提取MPP编译参数
修改Hi3516CV500_SDK_V2.0.2.0/smp/a7_linux/mpp/sample/smp_linux.mak文件。
添加4个echo将sample的编译参数提取出来。
编译sample即可提取编译参数。
提取CFLAGS
提取编译的库链接顺序
4.使用编译参数完善CMakeLists.txt文件
给工程目录下的CMakeLists.txt添加CFLAGS。
给src目录下的CMakeLists.txt添加链接库。
四、编译与调试
进入build目录进行编译与调试Cmake工程。
cmake ..用于生成Makefile文件
生成Makefile之后在build目录进行编译。
报错找不到audio_aac_adp.h文件,将SDK audio/adp目录下的文件复制到Cmake工程include和src目录。
Hi3516CV500_SDK_V2.0.2.0/smp/a7_linux/mpp/sample/audio/adp
报错找不到VGS相关函数,修改库的链接顺序,将libmpi放到lib_hiawb之后。
报错找不到MP3的相关函数,删除MP3相关的文件audio_mp3_adp.c/audio_mp3_adp.h/mp3dec.h,根据audio目录下的可知,mp3相关的库需要从Android P的源码中拷贝,暂时不添加MP3的代码。
删除MP3相关的文件需要删除build目录下的文件,重新生成Makefile。
rm * -rf
cmake ..
报错找不到MP3的头文件和定义,则屏蔽相关代码。
编译成功,同时在bin目录下生成可执行文件EXEC_MPP_SAMPLE。
将EXEC_MPP_SAMPLE复制到板子上即可运行。
五、总结
本教程将SDK的MPP代码重新建立Cmake工程,可以脱离SDK单独进行开发,大大提高了开发便捷性。不过,本教程是基于sample vio建立的Cmake工程,编译其他sample时可能会出现报错,需要额外处理错误信息。后续可能会在此基础上添加FB相关功能,相关更新会在git代码进行。CSDN积分多的小伙伴可以点击下CSDN下载地址下载。
本教程git地址
本教程文件CSDN下载地址
Hi3516DV300 Cmake工程建立教程相关推荐
- Borland C++建立工程菜鸟教程
实在不敢相信,学校里现在教学用的编译器还是七八十年代的老古董,难道这东西更能培养从没接触过代码的学生深刻理解c语言的运行流程,不得不说像VisualStdio这样的重量级开发环境确实屏蔽了很多底层的运 ...
- cmake的使用--从零建立一个小cmake工程
A minimal project 代码仓库地址 https://github.com/zzu-andrew/linux-sys/tree/dfew/CMake # 说明最低cmake版本要求 cma ...
- 【STM32】【STM32CubeMX】STM32CubeMX的使用之一:工程建立之点亮你的LED
文章目录 前言 1.工程建立 2.配置 2.1.写在前面 2.2.操作界面一览 2.1.引脚输出与配置 2.2.时钟配置 2.3.工程设置 2.3.1.Project 2.3.2.Code Gener ...
- 计算机网络拓扑分层,计算机网络和工程实践教程讲座主讲内容网络拓扑和分层体系结构.ppt...
计算机网络和工程实践教程讲座主讲内容网络拓扑和分层体系结构.ppt 1. 物理层接口 物理层接口主要涉及各种传输介质或传输设备的接口.由于传输介质和传输设备种类很多,因此物理层接口的标准也非常多.下面 ...
- 初识CMake,如何编写一个CMake工程(上)
如何编写一个CMake工程 笔者想分享CMake工程的原因? 1 接触CMake 1.1 认识CMake被广泛的使用? 1.2 了解CMake运行流程 1.3 Make和Makefile是什么关系? ...
- 初识CMake,如何编写一个CMake工程(下)
如何编写一个CMake工程 上文分析了针对一个源文件.多个源文件.多个目录的情况 1 CMake自定义编译选项Demo4 1.1 效果展示 2 CMake安装(make install)与测试(mak ...
- keil软件基于AT89C52的基本工程建立及其相关设置
Keil软件的工程建立与应用 1.首先我们双击打开Keil软件 2.建立新的文件 3.我们单击保存 4.创建相应的文件夹并将该文件放置该文件夹目录下更名为asm后缀文件,如下图所示 5.单击Keil工 ...
- Ubuntu下使用VS Code构建CMake工程
1.下载Visual Studio Code 编译器 可以去Ubuntu自带的应用商店下载,或者使用你命令行下载 2.设置中文显示 直接下载的是英文版本,需要设置成中文显示 先去VS Code自带的商 ...
- 【UG二次开发环境建立教程】
UG二次开发环境建立教程 关于UG二次开发环境的两种建立方法 方法一:导入UG二次开发向导模板 1.分别安装UG软件和Visual Studio软件,保证软件可以正常打开使用. 2.打开UG安装目录, ...
最新文章
- 利用COM+对数据库操作进行单元测试
- SSM中通过Json做前后端分离
- 再不用担心DataRow类型转换和空值了(使用扩展方法解决高频问题)
- 编译原理笔记 - 文法知识
- 小菜的CLR之旅(1)
- 短期目标[Till 2011-08-05]
- cobertura 使用_使用Cobertura,JUnit,HSQLDB,JPA涵盖您的测试
- 学用 TStringGrid [1] - ColCount、RowCount、Cells
- golang odbc mysql_go语言通过odbc操作Access数据库的方法
- 解决80端口被占用的情况
- 阿里字节面试题,多线程打印程序
- vfp 调用接口取数据_2分钟教你调用全国天气预报数据接口
- 通过DMVS采集并存储SQL Server性能计数器数据
- cryptojs des php,前端CryptoJS AES/DES加解密与后端PHP AES/DES加解密
- Java项目中使用OpenOffice转PDF
- 2022年湖南省中医执业医师考试第三单元医学针灸学模拟题
- Python爬虫:最牛逼的 selenium爬取方式!
- windows和linux共用蓝牙鼠标,双系统共用蓝牙键鼠(win10+macOS)
- java之缓存的使用
- python函数实验总结_Python程序设计实验报告:实验六 函数
热门文章
- 文件上传 服务器不响应headr,php 文件上传中服务器接收到$_FILES[xxx]['type'] 中的 type 原来是从 http header 里读取的,所以非常不可信...
- pip更新失败解决方法
- 浙江万里学院c语言题库答案,浙江万里学院单片机原理及应用模拟试卷八.doc
- 加权轮询算法(wrr),这个考点,概率有一点点高哦
- 交换路由报文的调度和队列图文详解: SP RR WRR WDRR
- NestJS 中,@ 符号是有什么含义
- OceanBase CTO杨传辉:下一代企业级分布式数据库的一体化设计
- excel取消密码_太神奇了!excel表格竟然可以设置查看密码
- css如何调整红心样式_jQuery CSS()方法改变CSS样式
- 新!uniapp微信小程序微信授权登录