当前位置: 首页 > news >正文

在瑞芯微 Rockchip SDK中增加自己的程序并使用CMake编译

在瑞芯微 Rockchip SDK中增加自己的程序并使用CMake编译

flyfish

语言:C++
编译:CMake
以RV1126为例在SDK中增加一个helloworld程序,并使用CMake编译。

列出涉及到的文件路径
sdk/app/helloworld
sdk/buildroot/configs/rockchip_rv1126_rv1109_defconfig
sdk/buildroot/package/Config.in
sdk/buildroot/package/helloworld/Config.in
sdk/buildroot/package/helloworld/helloworld.mk

1 helloworld程序源码路径

sdk/app/helloworld
涉及到两个文件,main.cpp和CMakeLists.txt
在这里插入图片描述

main.cpp文件内容如下

#include <iostream>

int main(int argc, char *argv[])
{
std::cout<<"helloworld"<<std::endl;
}

CMakeLists.txt文件内容如下

cmake_minimum_required(VERSION 3.10)

project(helloworld LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(helloworld main.cpp)
target_link_libraries(helloworld -static-libstdc++)
install(TARGETS helloworld RUNTIME DESTINATION "bin")

2 sdk/buildroot/configs/rockchip_rv1126_rv1109_defconfig

修改sdk/buildroot/configs/rockchip_rv1126_rv1109_defconfig文件的末尾部分增加如下内容:
BR2_PACKAGE_HELLOWORLD=y

rockchip_rv1126_rv1109_defconfig具体是哪个文件是根据配置SDK时选择的,这里是默认的,各个厂商通常会有自己的配置。
在对sdk执行./build.sh rootfs编译命令时也会看到具体是哪个配置文件

3 sdk/buildroot/package/Config.in

在menu "Target packages"下增加
source “package/helloworld/Config.in”
在这里插入图片描述

4 sdk/buildroot/package/helloworld/Config.in

在sdk/buildroot/package下新建一个helloworld文件夹

config BR2_PACKAGE_HELLOWORLD
 bool "helloworld"
 help
     Provided by flyfish

5 sdk/buildroot/package/helloworld/helloworld.mk

HELLOWORLD_VERSION = 1.0
HELLOWORLD_SITE_METHOD = local
HELLOWORLD_SITE = $(TOPDIR)/../app/helloworld
HELLOWORLD_INSTALL_STAGING = YES 
HELLOWORLD_IINSTALL_TARGET = YES
$(eval $(cmake-package))

执行编译命令,结果
在这里插入图片描述
可执行文件在sdk/buildroot/output/your_sdk_name/build/helloworld-1.0中
在这里插入图片描述
helloworld程序就可以在瑞芯微开发板中运行

相关文章:

  • Elasticsearch中的评分排序--Function score query
  • 【我不熟悉的css】04. jpg、png 合理使用图片格式
  • Java的Lambda表达式学习笔记:使用lambda表达式
  • 2022-09-02
  • 14天刷爆LeetCode算法学习计划——Day05 快慢指针(2)
  • Redis进阶
  • 双软认定流程?
  • 淘宝如何选词打造黄金标题?构词规则是什么?
  • 跨境运营培训品牌商店设计技巧
  • 双软企业认证与税收优惠政策讲解(比较齐全)
  • Java处理Excel表格的读取和写入
  • MySQL之临时表
  • 氨丙基咪唑离子液体(AMIBr)改性纤维素气凝胶吸附剂(CAgAMIBr)的实验要求
  • Go 命名规范
  • 容灾演练月报 | 雅安市商业银行四大业务系统完成容灾切换演练
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • Android 架构优化~MVP 架构改造
  • Debian下无root权限使用Python访问Oracle
  • JavaScript 奇技淫巧
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Shell编程
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • V4L2视频输入框架概述
  • VUE es6技巧写法(持续更新中~~~)
  • Vue.js-Day01
  • vue总结
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 高度不固定时垂直居中
  • 目录与文件属性:编写ls
  • 首页查询功能的一次实现过程
  • 小李飞刀:SQL题目刷起来!
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • zabbix3.2监控linux磁盘IO
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​TypeScript都不会用,也敢说会前端?
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (145)光线追踪距离场柔和阴影
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (笔试题)分解质因式
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (算法设计与分析)第一章算法概述-习题
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)Sql Server 保留几位小数的两种做法
  • *1 计算机基础和操作系统基础及几大协议
  • .“空心村”成因分析及解决对策122344
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .net专家(张羿专栏)