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

相关推荐
lqj_本人5 分钟前
WinMerge 鸿蒙 PC 适配全记录:以 Qt 重建桌面外壳,打通文件与文件夹差异闭环
qt·华为·harmonyos
不羁的木木9 分钟前
给鸿蒙 App 增加唤起系统邮件发送能力 —— flutter_email_sender 的鸿蒙使用指南
flutter·华为·harmonyos
承渊政道14 分钟前
PostgreSQL 鸿蒙 PC 适配全记录:从原生交叉编译到 HNP 数据库服务闭环
数据库·postgresql·harmonyos·鸿蒙系统·pc端
lqj_本人15 分钟前
Tftpd64 鸿蒙 PC 适配全记录:用 Qt 重建一组可运行的 UDP 网络服务
qt·udp·harmonyos
User_芊芊君子23 分钟前
RStudio 鸿蒙 PC 适配全记录:以 Qt 原生工作区承载嵌入式 R
qt·r语言·harmonyos
ai安歌31 分钟前
Git Extensions 鸿蒙 PC 适配全记录:从 WinForms 客户端到 ArkUI 原生工作台
git·华为·harmonyos
●VON1 小时前
Flutter 鸿蒙插件适配实战:用 accurate_storage_info 0.1.1 查询总量、可用量与已用量
flutter·华为·harmonyos
网络豆1 小时前
Apache Maven 鸿蒙 PC 适配全记录:把 JVM 构建工具交付到 HiShell
maven·apache·harmonyos
鸽芷咕1 小时前
MySQL Server 鸿蒙 PC 适配全记录:以混合工具链完成 C++23 交叉编译与 HNP 交付
adb·harmonyos·c++23
云边有个稻草人1 小时前
Tera Term 鸿蒙 PC 适配全记录:用 ArkUI 与 Native C++ 重建多协议终端工作流
c++·stm32·harmonyos