2、开发环境搭建:Linux与Windows双环境配置、编译工具链安装、源码获取与目录结构

说实话,做鸿蒙轻量系统移植,第一步就把很多人卡住了——环境搭不起来。

我刚开始接触那会儿,也折腾了好几天。后来发现,其实只要理清思路,这事儿没那么复杂。今天我就把我在项目中积累的经验,掰开了揉碎了讲给你听。

2.1 双环境配置:为什么非要折腾两个系统?

你可能会问:一个Windows不够用吗?

嗯,这里有个现实问题。鸿蒙轻量系统的编译工具链,大部分是基于Linux的。Windows下虽然也能搞,但坑太多。我建议你这样做:

  • Windows:用来写代码、看文档、烧录调试。毕竟日常办公还是Windows顺手。
  • Linux:用来编译源码、生成固件。这是主力编译环境。

我个人习惯在Windows上装个虚拟机,跑Ubuntu 20.04。为什么选这个版本?因为我在项目中踩过坑——Ubuntu 22.04的某些库和鸿蒙的编译脚本不兼容,折腾了我一下午。

我的建议: 虚拟机用VMware Workstation,分配4核CPU、8GB内存,硬盘至少80GB。别省这点资源,编译时卡死更浪费时间。

2.2 编译工具链安装:别小看这一步

工具链装不对,后面全白费。鸿蒙轻量系统主要用两种工具链:

芯片架构 工具链 安装方式
ARM Cortex-M系列 arm-none-eabi-gcc apt install 或 官网下载
RISC-V系列 riscv64-unknown-elf-gcc 源码编译或预编译包
ARM Cortex-A系列 aarch64-none-elf-gcc apt install gcc-aarch64-linux-gnu

我曾经在给一款Cortex-M4芯片移植时,用了错误的工具链版本,编译出来的固件死活跑不起来。后来发现是gcc版本太新,生成的指令集不兼容。所以,我建议你严格按照官方文档指定的版本号来装。

安装命令其实很简单,以Ubuntu为例:

# 安装ARM Cortex-M工具链
sudo apt install gcc-arm-none-eabi

# 验证安装
arm-none-eabi-gcc --version

# 输出示例(版本号要匹配)
arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824
注意: 不要用sudo apt install默认源里的版本,有时候太旧。我建议去ARM官网下载最新的预编译包,解压后加到PATH里。这样最稳。

2.3 源码获取:从官方仓库拉下来

鸿蒙的源码托管在Gitee上。获取方式有两种:

  1. 直接git clone:适合网络好的情况。
  2. 下载压缩包:适合网络差的情况。

我个人推荐用repo工具来管理,因为鸿蒙源码分很多仓库,一个个clone太麻烦。repo可以一次性拉取所有相关仓库。

# 安装repo工具
mkdir -p ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo
chmod +x ~/bin/repo
export PATH=~/bin:$PATH

# 初始化并同步源码
mkdir ohos_light && cd ohos_light
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c

这里有个坑:repo sync 可能会因为网络问题中断。我建议你加个 -j4 参数,用4个线程并行下载,速度会快很多。如果中途断了,重新执行 repo sync 会继续下载,不会从头开始。

2.4 目录结构:别在源码里迷路

源码下载完后,你看到的目录结构大概是这样的:

ohos_light/
├── applications/       # 应用层代码
├── base/               # 基础能力
├── build/              # 编译构建脚本
├── device/             # 设备适配层(重点!)
├── docs/               # 文档
├── drivers/            # 驱动框架
├── foundation/         # 系统服务
├── kernel/             # 内核代码
├── prebuilts/          # 预编译工具链
├── third_party/        # 第三方开源库
└── utils/              # 公共工具

做移植工作,你主要关注两个目录:

  • device/:这里面放的是各家芯片厂商的适配代码。比如 device/hisilicondevice/rockchip。你要移植新芯片,就在这里新建一个目录。
  • kernel/:内核层。轻量系统用的是LiteOS-M或LiteOS-A内核,代码就在这里。

我记得第一次看这个目录结构时,有点懵。后来发现一个规律:鸿蒙的目录命名很规范,基本都是按功能模块来的。你只要记住“device是硬件相关,kernel是内核相关,applications是用户程序”,基本就不会走偏。

核心逻辑图:鸿蒙轻量系统移植的目录依赖关系

applications/ foundation/ + base/ kernel/ (LiteOS-M/A) device/ (移植核心) drivers/ 图:鸿蒙轻量系统移植核心目录依赖关系

说白了,移植工作就是:你需要在 device/ 里告诉系统“我的芯片长什么样”,在 kernel/ 里配置“内核怎么跑”,在 drivers/ 里实现“外设怎么驱动”。这三层搞定了,移植就完成了一大半。

2.5 环境验证:跑个Hello World试试

环境搭好之后,别急着写代码。先验证一下能不能编译通过。我习惯用官方自带的示例工程来测试:

# 进入源码根目录
cd ohos_light

# 设置编译环境
hb set

# 选择开发板(比如:qemu_cortex_m3)
# 然后编译
hb build -f

如果编译成功,你会看到类似这样的输出:

[SUCCESS] Build success!
Output: out/qemu_cortex_m3/OHOS_Image.bin

看到这个,说明你的环境已经搭好了。我曾经在第一次编译时,卡在了一个Python库缺失的问题上。后来发现是 pip install 没装全。这里我建议你提前装好这些:

pip install setuptools kconfiglib pycryptodome ecdsa
避坑指南: 我曾经因为Python版本不对,折腾了两天。鸿蒙要求Python 3.8以上,但3.10在某些库上有兼容问题。我个人推荐用Python 3.9,最稳。

好了,环境搭好了,工具链装上了,源码也拉下来了。接下来就可以正式开始移植工作了。记住:环境搭建这一步,慢就是快。花点时间把基础打牢,后面会顺利很多。


公众号:蓝海资料掘金营,微信deep3321