2. 开发环境搭建(一):Linux 开发环境准备(Ubuntu)、交叉编译工具链安装、repo 工具配置
说实话,做 OpenHarmony 南向开发,第一步就是把环境搭好。这一步要是没弄利索,后面编译报错能让你怀疑人生。我自己带过不少新人,十有八九的编译问题,最后发现都是环境没配对。
这一章,咱们就把 Ubuntu 开发环境、交叉编译工具链、还有 repo 工具这三个核心东西搞定。别急,一步步来。
2.1 Ubuntu 开发环境准备
我个人习惯用 Ubuntu 20.04 LTS,64 位版本。为什么选它?因为 OpenHarmony 官方团队主要在这个版本上验证,坑最少。你非要用 22.04 也行,但有些依赖包版本可能对不上,到时候得自己折腾。
2.1.1 基础系统要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 双核 x86_64 | 4 核及以上 |
| 内存 | 8 GB | 16 GB 或更高 |
| 磁盘 | 120 GB 空闲 | 256 GB SSD |
| 网络 | 宽带连接 | 稳定宽带 |
2.1.2 安装基础依赖包
系统装好后,第一件事就是装依赖。打开终端,执行下面这串命令:
sudo apt-get update
sudo apt-get install -y git curl wget tar unzip zip
sudo apt-get install -y python3 python3-pip python3-venv
sudo apt-get install -y binutils build-essential bison flex
sudo apt-get install -y libncurses5-dev libssl-dev
sudo apt-get install -y gcc-arm-linux-gnueabihf
嗯,这里要注意。上面最后一行装的是 ARM 交叉编译器,但 OpenHarmony 实际用的是自己定制的工具链。别急,后面我们会单独装。
2.1.3 配置 Python 环境
OpenHarmony 的构建系统依赖 Python 3.8+。Ubuntu 20.04 默认带的是 Python 3.8,够用。但你需要确认一下:
python3 --version
如果版本低于 3.8,建议升级。我个人习惯用 update-alternatives 来管理多版本 Python,这样不会搞乱系统自带的 Python。
python3 -m venv ohos_env
source ohos_env/bin/activate
2.2 交叉编译工具链安装
交叉编译,说白了就是在你的 x86 电脑上编译出能在 ARM 芯片上跑的程序。OpenHarmony 支持多种芯片架构,我们以最常用的 ARM64 为例。
2.2.1 下载官方工具链
OpenHarmony 官方推荐使用 gcc-arm-10.3-2021.07 这个版本。别问我为什么是这个版本,问就是官方验证过的。我曾经试过用更新的 11.2 版本,结果链接阶段报了一堆莫名其妙的错。
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz
tar -xf gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz
sudo mv gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf /opt/
2.2.2 配置环境变量
解压完后,需要把工具链路径加到 PATH 里。编辑 ~/.bashrc,在末尾加上:
export PATH=/opt/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin:$PATH
export CROSS_COMPILE=arm-none-linux-gnueabihf-
然后执行 source ~/.bashrc 让配置生效。验证一下:
arm-none-linux-gnueabihf-gcc --version
如果能看到版本信息,说明装好了。
CROSS_COMPILE 这个环境变量告诉构建系统,编译时要用哪个前缀的工具链。OpenHarmony 的编译脚本会自动读取这个变量。
2.2.3 安装 OpenHarmony 专用工具链
除了 ARM 官方的工具链,OpenHarmony 还依赖一些自己的工具。比如 gn、ninja 这些构建工具。官方提供了一个脚本可以一键安装:
git clone https://gitee.com/openharmony/ohos-build.git
cd ohos-build
python3 build.py --install-dir=/opt/ohos-build
安装完成后,把 /opt/ohos-build 也加到 PATH 里。
gn 和系统自带的 ninja 版本冲突。解决办法是确保 /opt/ohos-build 在 PATH 的最前面,优先使用 OpenHarmony 自带的版本。
2.3 repo 工具配置
OpenHarmony 的代码仓库非常多,有几百个。如果用 git clone 一个一个拉,手都得抽筋。repo 就是 Google 开发的一个工具,专门用来管理这种多仓库项目。
2.3.1 安装 repo
安装 repo 很简单,就两步:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
然后把 ~/bin 加到 PATH 里。同样编辑 ~/.bashrc:
export PATH=~/bin:$PATH
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
2.3.2 配置 Git 用户信息
repo 底层还是用 git 来管理代码,所以需要先配置好 git 的用户信息:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
这个邮箱建议用你注册 Gitee 的邮箱,后面提交代码时会用到。
2.3.3 初始化 repo 工作区
现在可以拉代码了。创建一个工作目录,然后初始化:
mkdir ohos_workspace
cd ohos_workspace
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
这里 -b master 指定了分支。如果你想用某个发布版本,比如 OpenHarmony 3.2 Release,就把 master 换成对应的标签。
2.3.4 同步代码
初始化完成后,执行同步命令:
repo sync -c -j4
-c 表示只下载当前分支的代码,-j4 表示用 4 个线程并行下载。网络好的话可以调高到 -j8 甚至 -j16。
repo sync 会断点续传,不用从头开始。
2.4 本章知识体系
下面这张图把本章的核心内容串起来了,你可以对照着检查自己有没有遗漏:
2.5 验证环境
所有东西都装好后,我建议你做一个快速验证。写一个简单的 C 程序,用交叉编译器编译,看看能不能生成 ARM 架构的可执行文件:
echo '#include <stdio.h>
int main() {
printf("Hello OpenHarmony!\n");
return 0;
}' > test.c
arm-none-linux-gnueabihf-gcc test.c -o test
file test
如果输出里包含 ARM 字样,说明交叉编译环境没问题。接下来就可以放心地进入下一章,开始真正的 OpenHarmony 编译了。