鸿蒙南向开发教程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 小时前
鸿蒙 PC的 vcpkg 交叉编译库在x86_64宿主环境下的AI自动化验证方案
人工智能·自动化·harmonyos
再见6582 小时前
HarmonyOS NEXT 实战:从零开发一款密码生成器应用
华为·harmonyos
李二。2 小时前
鸿蒙原生ArkTS布局方式之ColumnBaseline垂直排列
华为·harmonyos
yuegu7773 小时前
HarmonyOS应用<节气通>开发第8篇:知识百科页开发
华为·harmonyos
想你依然心痛3 小时前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与HMAF的“航界智脑“——PC端AI智能体沉浸式无人机集群任务规划与空域协同管理工作台
人工智能·ar·无人机·harmonyos·智能体
李二。4 小时前
鸿蒙原生ArkTS布局方式之ColumnCenter垂直排列
华为·harmonyos
不爱吃糖的程序媛4 小时前
@capacitor/camera 插件在鸿蒙PC平台的适配实践
华为·harmonyos
想你依然心痛4 小时前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与HMAF的“链界智脑“——PC端AI智能体沉浸式区块链智能合约审计与DeFi风控管理工作台
人工智能·区块链·ar·harmonyos·智能体