鸿蒙南向开发教程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

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

gn 复制代码
static_library("example_myhello") {    # 构建目标名,与 BUILD.gn 中引用一致
    sources = [
        "myhello.c"                     # 源文件名(自己命名)
    ]

    include_dirs = [
        "//utils/native/lite/include",   # 系统头文件路径
    ]
}

2.3 主程序 app/myhello/myhello.c

c 复制代码
#include "ohos_init.h"   // OpenHarmony 系统初始化头文件

void MyHelloMain(void)    // 函数名自己命名
{
    printf("My Hello World!\n");  // 自定义输出内容
}

SYS_RUN(MyHelloMain);     // 注册为系统启动入口,函数名需一致

三、命名规则总结

位置 命名示例 说明
目录名 myhello 模块文件夹,小写英文
构建目标 example_myhello BUILD.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 found BUILD.gn 中目录名或目标名写错 检查 app/BUILD.gnfeatures 路径是否与目录结构一致
编译报错 undefined reference 函数名与 SYS_RUN 不一致 确认 SYS_RUN(MyHelloMain) 与函数定义一致
无串口输出 波特率不对 确认串口工具设置为 115200

六、练习

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

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

七、下一步

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

相关推荐
爱吃大芒果2 小时前
复刻 HarmonyKit 工具箱:基于新版 @kit 开发本地工具 App
华为·harmonyos
风华圆舞3 小时前
鸿蒙上跑通第一个 AI Agent:5 分钟接入智谱/DeepSeek
人工智能·华为·harmonyos·arkts·arkui·toolregistry
xd1855785554 小时前
电影匹配引擎-基于鸿蒙的心情电影推荐应用开发实践
人工智能·安全·华为·harmonyos·鸿蒙
千逐685 小时前
HarmonyOS 实战 | @State 不神秘——变量一变界面就跟着变
华为·harmonyos·鸿蒙
不才难以繁此生5 小时前
NavPathStack 返回错页怎么排查:中式美食详情页从搜索、收藏和推荐进入怎么回到原处
harmonyos·arkts·arkui·中式美食·navpathstack
xd1855785558 小时前
梦境解析师-基于鸿蒙的梦境心理分析应用开发实践
人工智能·华为·harmonyos·鸿蒙
千逐688 小时前
鸿蒙实战:一多自适应与原子化布局 —— 一次开发多端部署的工程化落地
华为·harmonyos·鸿蒙
解局易否结局9 小时前
鸿蒙原生开发实战:Native 并发与高性能计算
华为·harmonyos
xo1988201110 小时前
鸿蒙 AI 自动化开发:让 AI 学会自己编译、自己调试
人工智能·自动化·harmonyos
HarmonyOS_SDK10 小时前
差异化推送消息能力,助力支付宝腕上消息业务闭环
harmonyos