鸿蒙Hi3861学习三-第一个实例程序Hello_world

news2025/1/12 0:02:53

一、简介

        前两章介绍了环境搭建、烧录和编译。这一节,来介绍实现第一个经典代码“hello world”。

        先介绍小熊派的目录结构,该目录结构延续了OpenHarmony官方目录结构。

二、实操

        1.搭建代码架构

        1).新建项目文件夹hello_world

cd bearpi-hm_nano/applications/BearPi/BearPi-HM_Nano/sample/
mkdir hello_world

        创建hello_world目录,用来存放业务源码文件

        2).新增hello_world.c文件

cd hello_world
touch hello_world.c

        创建hello_world.c文件,该文件为业务源码文件

        3).新增BUILD.gn文件

touch BUILD.gn

        创建BUILD.gn文件,该文件为业务源码编译脚本

        4).最终代码架构展示

.
└── applications        
    └── BearPi
        └── BearPi-HM_Nano
            └── sample
                │── hello_world
                │  │── hello_world.c
                │  └── BUILD.gn
                └── BUILD.gn

        2.代码编写

        1).编写业务代码

        在hello_world.c文件中增加如下代码:

#include <stdio.h>
#include "ohos_init.h"

void Hello_World(void)
{
    printf("this is a test demo \r\n Hello World!\r\n");
}

APP_FEATURE_INIT(Hello_World);

        APP_FEATURE_INITOpenHarmony启动恢复模块接口,该接口用来启动业务。也可以使用SYS_RUN来实现,效果是一样的。(APP_FEATURE_INIT和SYS_RUN定义都在ohos_init.h)文件中。

        2).编写用于将业务构建成静态库的BUILD.hn文件

        在hello_world文件夹的BUILD.gn文件中添加如下代码:

static_library("hello_world"){
    sources = [
        "hello_world.c"
    ]
    include_dirs = [
        "//utild/native/lite/include"
    ]
}

        该文件由三部分内容构成,目标源文件头文件路径

        static_library:该文件中指定业务模块的编译结果,为静态库文件libhello_world.a。

         sources:该文件中指定静态库.a所依赖的.c文件及路径,若路径中包含“//”则表示绝对路径代码的根路径,即bearpi-hm_nano文件夹)。若不包含“//”则表示相对路径。

         incllude_dirs:该文件中指定source所依赖的.h文件路径

         3).编写模块BUILD.gn文件,指定需要参与构建的特性模块

        配置sample文件夹中的BUILD.gn文件。在features字段中增加索引"hello_world:hello_world",使目标模块参与编译

        注意屏蔽其他模块

#"Zx_Developer:zx_develop_sample"  ##不参与构建,为开发者贡献演示结构,其中Zx为 Z1,Z2...Z100
        #"Z1_hi3861_uart_ylc:uart_hi3861",
        #"Z2_hi3861_flash_ylc:flash_example",

        "hello_world:hello_world"

        hello_world(前):是相对路径,指向./applications/BearPi/BearPi-HM_Nano/sample/hello_world/BUILD.gn

        hello_world(后):指向 ./applications/BearPi/BearPi-HM_Nano/sample/hello_world/BUILD.gn 中的static_library("hello_world")

        2.编译

        在项目根目录下,运行编译代码:

python build.py BearPi-HM_Nano

         编译成功。

        3.烧录

        

         4.复位开发板并查看LOG输出

         完成!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/471728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端笔记】前端包管理工具和构建打包工具介绍之npm、yarn、webpack、vite

一、NPM包管理工具 1.1、什么是NPM NPM&#xff08;Node Package Manager&#xff09;是node包管理器&#xff0c;是node.js默认采用的软件包管理系统&#xff0c;使用JavaScript语言编写。包管理可以理解为依赖管理&#xff0c;有一个npm包管理仓库&#xff0c;当我们执行np…

Elasticsearch --- RestAPI、RestClient操作文档

一、RestAPI ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c;通过http请求发送给ES。官方文档地址&#xff1a;Elasticsearch Clients | Elastic 其中的Java Rest Client又包括两种&#xff1a; 1.1、环境配置 创建数…

【JavaEE 初阶】 JVM内存区域划分与GC垃圾回收机制

尽力做到十全十美~~ 文章目录 1. JVM内存区域划分2. 垃圾回收机制2.1 内存溢出与内存泄漏2.2 判断是否是垃圾2.2.1 引用计数2.2.2 可达性分析 2.3 垃圾清理算法2.3.1 标记清除2.3.2 复制算法2.3.3 标记整理算法2.3.4 分代回收 1. JVM内存区域划分 JVM运行时数据区域&#xff0…

5款非常好用的设计工具,推荐第一款在线设计工具

特别是在当今的UI设计领域&#xff0c;如果没有合适的UI设计工具&#xff0c;那么即使你的创作能力很强&#xff0c;工作也会有限&#xff0c;但许多软件需要会员使用&#xff0c;这不适合新设计师&#xff0c;所以有在线UI设计工具吗&#xff1f;关于这个问题&#xff0c;今天…

【翻译一下官方文档】学习uniCloud云数据库之前需要了解的传统api操作数据库(Command)

我将用图文的形式&#xff0c;把市面上优质的课程加以自己的理解&#xff0c;详细的把&#xff1a;创建一个uniCloud的应用&#xff0c;其中的每一步记录出来&#xff0c;方便大家写项目中&#xff0c;做到哪一步不会了&#xff0c;可以轻松翻看文章进行查阅。&#xff08;此文…

STM32:GPIO配置和使用

目录 一、GPIO简介 1.1 GPIO的输入输出模式 1.1.1 输入模式 1.1.2 输出模式 二、GPIO的使用 2.1 引脚初始化 2.2 引脚使用 注&#xff1a;型号&#xff1a;STM32F407ZET6 一、GPIO简介 GPIO&#xff1a;通用输入输出接口 STM32上有A~H共8组&#xff0c;其中A~G7组每…

WPS作图常见问题

表格 1、打开WPS表格&#xff0c;切换至“开始”选项卡&#xff0c;单击“绘图边框”按钮&#xff0c;如下图。 2、鼠标变成如下图一样的笔后&#xff0c;按照斜线表头的方向拉动鼠标&#xff0c;然后就给单元格添加了一道斜线&#xff0c;如下图。 WPS表格如何随文字移动 1、…

java ssm成绩查询管理系统idea开发mysql数据库web结构计算机java编程

一、源码特点 idea ssm成绩查询管理系统是一套完善的web设计系统mysql数据库springMVC框架mybatis&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 java ssm成绩查询管理系统idea开发mysql数据…

智慧校园管理平台系统源码,云平台、人脸识别、物联网技术、信息发布技术

智慧校园云平台源码&#xff0c;智慧电子班牌源码 电子班牌系统是全功能智慧管理平台系统&#xff0c;电子班牌系统是以在校人员信息、出勤管理和班级信息展示为主体&#xff0c;为学校教育行业量身设计的一款集云平台、网络数据实时通信技术、物联网技术、智能控制技术、信息…

Google Sites快速做出一個簡單的網頁

新手網站架設的神器 Google Sites協作平台&#xff0c;為什麼這樣子說呢&#xff1f; 因為新手入門款以Google Sites協作平台練習&#xff0c;認識網站架設的基礎概念&#xff0c;接著再轉往進階班的Wordpress網頁設計。比較會循序漸進。 二來Google Sites協作平台網站架設費用…

使用docker搭建RocketMQ(非集群搭建官方镜像)

之前在使用 RocketMQ 官方的包在搭建的时候&#xff0c;发现好多问题&#xff0c;什么修改内存大小&#xff0c;然后启动 broker 报错&#xff0c;类似 service not available now, maybe disk full 等等… 最后决定还是重新用 docker 搭建下&#xff0c;感觉这样子玩坏了&…

MySQL数据库的数据备份与数据恢复

MySQL数据库的数据备份与恢复主要有3种方法&#xff0c;前两种都是MySQL dump命令&#xff0c;第三种则是用Navicat工具直接备份。相比而言&#xff0c;第三种方法更加简单&#xff01; 1 方法一&#xff08;MySQL dump命令&#xff09; 1.1 登录MySQL [roothurys22 ~]# mysq…

优势分析- 性格测试

盖洛普 免费的人格测试 | 16Personalities [转][类似我] 某作者结合自己性格对盖洛普的推广_个人渣记录仅为自己搜索用的博客-CSDN博客 塞利格曼先生设计的优势测量表格.docx-全文可读 谁知道在哪里可以做盖洛普在线测试题&#xff1f; - 知乎 为什么强烈建议你做正版盖洛普…

【数据库数据恢复】raid5+Sql Server数据库数据恢复案例

数据库数据恢复环境&#xff1a; 5块磁盘组建RAID5&#xff0c;划分LUN供windows服务器使用&#xff1b; windows服务器上部署Sql Server数据库&#xff1b;操作系统层面划分了三个逻辑分区。 数据库故障&初检&#xff1a; 未知原因导致Sql Server数据库文件丢失&#xff…

【tippecanoe】Linux环境tippecanoe部署

Linux环境tippecanoe部署 1.简介2.安装部署2.1相关依赖2.2 sqlite 3.tippecanoe安装 1.简介 mapbox-gl支持矢量切片 &#xff0c;其中tippecanoe是mapbox官方提供的一个开源矢量切片工具。tippecanoe支持mbtiles格式的数据生成。 工具tippecanoe的使用可以再linux进行&#xf…

优雅的接口防刷处理方案

前言 本文为描述通过Interceptor以及Redis实现接口访问防刷Demo 这里会通过逐步找问题&#xff0c;逐步去完善的形式展示 原理 通过ip地址uri拼接用以作为访问者访问接口区分 通过在Interceptor中拦截请求&#xff0c;从Redis中统计用户访问接口次数从而达到接口防刷目的 …

《大师说栏目第一期》汽车以太网测试项那么多,到底该测啥呢?

#《大师说》栏目上线啦# 《大师说》栏目是怿星科技2023年推出的深度思考栏目&#xff0c;通过邀请内部专家&#xff0c;针对智能汽车行业发展、技术趋势等输出个性化的观点。每期一位大师&#xff0c;每位一个话题&#xff0c;本期由我们怿星以太网扛把子--邓伟&#xff0c;进行…

MetaERP系统主要干什么的,华为自研ERP的路子是否可以效仿?

近日&#xff0c;华为成功研发出自主可控的MetaERP系统&#xff0c;并完成了对旧有ERP系统的替换。该系统采用全栈自主可控技术&#xff0c;基于华为欧拉操作系统、GaussDB等根技术&#xff0c;采用云原生架构、元数据多租架构、实时智能技术等&#xff0c;提高业务效率&#x…

Trimble RealWorks处理点云数据(八)之点云导入houdini生成三维模型

步骤 1、las导入Trimble RealWorks 2、对点云数据预处理 可以参考这篇文章 TrimbleRealWorks点云数据预处理 我这边是做了一个新建坐标系以及0.02m的取样 3、导出pts格式 接下来的流程可以参考 https://learn.microsoft.com/zh-cn/dynamics365/mixed-reality/guides/3d-co…

5年测试老鸟总结,自动化测试的实施到落地,看这一篇足够...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…