2、开发环境搭建:Linux与Windows双环境配置、编译工具链安装、源码获取与目录结构
说实话,做鸿蒙轻量系统移植,第一步就把很多人卡住了——环境搭不起来。
我刚开始接触那会儿,也折腾了好几天。后来发现,其实只要理清思路,这事儿没那么复杂。今天我就把我在项目中积累的经验,掰开了揉碎了讲给你听。
2.1 双环境配置:为什么非要折腾两个系统?
你可能会问:一个Windows不够用吗?
嗯,这里有个现实问题。鸿蒙轻量系统的编译工具链,大部分是基于Linux的。Windows下虽然也能搞,但坑太多。我建议你这样做:
- Windows:用来写代码、看文档、烧录调试。毕竟日常办公还是Windows顺手。
- Linux:用来编译源码、生成固件。这是主力编译环境。
我个人习惯在Windows上装个虚拟机,跑Ubuntu 20.04。为什么选这个版本?因为我在项目中踩过坑——Ubuntu 22.04的某些库和鸿蒙的编译脚本不兼容,折腾了我一下午。
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
2.3 源码获取:从官方仓库拉下来
鸿蒙的源码托管在Gitee上。获取方式有两种:
- 直接git clone:适合网络好的情况。
- 下载压缩包:适合网络差的情况。
我个人推荐用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/hisilicon、device/rockchip。你要移植新芯片,就在这里新建一个目录。 - kernel/:内核层。轻量系统用的是LiteOS-M或LiteOS-A内核,代码就在这里。
我记得第一次看这个目录结构时,有点懵。后来发现一个规律:鸿蒙的目录命名很规范,基本都是按功能模块来的。你只要记住“device是硬件相关,kernel是内核相关,applications是用户程序”,基本就不会走偏。
核心逻辑图:鸿蒙轻量系统移植的目录依赖关系
说白了,移植工作就是:你需要在 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
好了,环境搭好了,工具链装上了,源码也拉下来了。接下来就可以正式开始移植工作了。记住:环境搭建这一步,慢就是快。花点时间把基础打牢,后面会顺利很多。
公众号:蓝海资料掘金营,微信deep3321