鸿蒙南向开发教程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 预告:学习鸿蒙内核,任务创建

相关推荐
谷子在生长1 天前
纯血鸿蒙自定义弹窗最佳实践:从「到处复制」到「一行调用」
前端·harmonyos
小魔女千千鱼2 天前
把 Go 塞进鸿蒙PC:windows上用 c-shared 跑 2048
harmonyos
TrisighT2 天前
Electron 跑在鸿蒙 PC 上,单窗口和多窗口内存差 800MB?我抓了 5 组数据
性能优化·electron·harmonyos
TrisighT3 天前
AI写埋点代码,35%覆盖率坑惨运营
harmonyos·arkts·arkui
Junerver6 天前
把 DevEco Code 的 HarmonyOS 开发能力装进口袋——harmonyos-dev-skill
harmonyos
程序猿追6 天前
那个右下角的小数字怎么“卡”住我打字——我用 HarmonyOS 自己写了一个字数限制输入框
pytorch·华为·harmonyos
古德new6 天前
鸿蒙PC使用electron迁移:Joplin Electron 桌面适配全记录
华为·electron·harmonyos
世人万千丶6 天前
桌面便签小应用 - HarmonyOS ArkUI 开发实战-TextArea与Flex布局-PC版本
华为·harmonyos·鸿蒙·鸿蒙系统
慧海灵舟6 天前
AGenUI 鸿蒙端实战踩坑录:从 Column 布局消失到异步组件宽度为 0
华为·harmonyos