news 2026/6/2 20:16:19

鸿蒙南向开发教程 Day 2:创建自己的 Hello World 工程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
鸿蒙南向开发教程 Day 2:创建自己的 Hello World 工程

目标:学会自己命名模块,创建并编译第一个自定义 Hello World 工程
前置条件:已完成 Day 1 的环境搭建(DevEco Device Tool + 工具链 + 源码导入)


一、工程结构说明

src/applications/sample/wifi-iot/app/目录下创建自定义模块,这里以myhello为例:

app/ ├── BUILD.gn # 应用入口构建配置 └── myhello/ # 自定义模块目录(自己命名) ├── BUILD.gn # 模块构建配置 └── myhello.c # 主程序源码(自己命名)

二、文件详解

2.1 应用入口app/BUILD.gn

import("//build/lite/config/component/lite_component.gni") lite_component("app") { features = [ "myhello:example_myhello" # 引用 myhello 模块下的 example_myhello 目标 ] }
  • myhello:目录名(自己命名)
  • example_myhello:构建目标名(自己命名)

2.2 模块构建app/myhello/BUILD.gn

static_library("example_myhello") { # 构建目标名,与 BUILD.gn 中引用一致 sources = [ "myhello.c" # 源文件名(自己命名) ] include_dirs = [ "//utils/native/lite/include", # 系统头文件路径 ] }

2.3 主程序app/myhello/myhello.c

#include"ohos_init.h"// OpenHarmony 系统初始化头文件voidMyHelloMain(void)// 函数名自己命名{printf("My Hello World!\n");// 自定义输出内容}SYS_RUN(MyHelloMain);// 注册为系统启动入口,函数名需一致

三、命名规则总结

位置命名示例说明
目录名myhello模块文件夹,小写英文
构建目标example_myhelloBUILD.gnstatic_library()的名字
源文件名myhello.c与目录名保持一致,方便管理
函数名MyHelloMain驼峰命名,与模块名对应
SYS_RUN参数MyHelloMain必须与函数名完全一致

四、编译与验证

4.1 编译

  1. VSCode 底部工具栏点击Build
  2. 或快捷键Ctrl+Shift+B

编译成功后,镜像位于:

out/hispark_pegasus/wifiiot_hispark_pegasus/Hi3861_wifiiot_app_allinone.bin

4.2 烧录

  1. 连接开发板 USB
  2. 点击 IDE 的Upload按钮,等待弹出提示,按下开板RESET按键
  3. 等待烧录完成(约 30 秒)

4.3 查看输出

打开串口工具:

  • 端口:开发板对应的 COM 口
  • 波特率:115200

重启开发板,串口输出:

My Hello World!


五、常见问题

问题原因解决
编译报错target not foundBUILD.gn中目录名或目标名写错检查app/BUILD.gnfeatures路径是否与目录结构一致
编译报错undefined reference函数名与SYS_RUN不一致确认SYS_RUN(MyHelloMain)与函数定义一致
无串口输出波特率不对确认串口工具设置为115200

六、练习

尝试将myhello改为自己的名字,例如:

  • 目录:zhangsan
  • 目标:example_zhangsan
  • 函数:ZhangSanMain
  • 输出:"Hello from ZhangSan!"

七、下一步

Day 3 预告:学习鸿蒙内核,任务创建

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/2 20:07:47

构建隐私优先的遥测数据收集体系:从设计到实战

1. 项目概述:当数据洞察遇上隐私保护在数据驱动的时代,无论是运维监控、产品体验优化,还是业务决策支持,遥测数据的收集都扮演着至关重要的角色。简单来说,遥测数据就是系统、应用或设备在运行时自动生成并上报的各类指…

作者头像 李华
网站建设 2026/6/2 20:07:11

MobileAgent:突破GUI自动化瓶颈的多平台智能代理革命

MobileAgent:突破GUI自动化瓶颈的多平台智能代理革命 【免费下载链接】MobileAgent Mobile-Agent: The Powerful GUI Agent Family 项目地址: https://gitcode.com/GitHub_Trending/mo/mobileagent MobileAgent是由阿里巴巴通义实验室推出的革命性GUI智能代…

作者头像 李华
网站建设 2026/6/2 20:06:53

OpCore Simplify:黑苹果配置的智能架构革命

OpCore Simplify:黑苹果配置的智能架构革命 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在开源硬件社区中,黑苹果配置一直被…

作者头像 李华
网站建设 2026/6/2 20:05:46

基于Arduino与HY-SRF05的超声波测距系统:从原理到实践

1. 项目概述与核心思路超声波测距,听起来挺高大上,但说白了就是让硬件“喊一嗓子”然后听回声,跟蝙蝠和海豚的定位原理差不多。我在做智能小车、自动门或者一些简单的安防项目时,经常需要用到这种非接触式的距离测量方案。市面上传…

作者头像 李华
网站建设 2026/6/2 20:05:34

基于Arduino与接近传感器的智能闹钟:从仿真到实物的嵌入式开发实践

1. 项目概述与设计思路每天早上被闹钟吵醒,然后迷迷糊糊地按掉它,翻个身继续睡,结果错过重要的事情——这场景是不是太熟悉了?作为一个常年与起床困难症作斗争的工程师,我尝试过各种方法,从把手机放得远远的…

作者头像 李华