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
网络 宽带连接 稳定宽带
注意:磁盘空间千万别省。OpenHarmony 完整代码拉下来就 10 多个 G,编译一次还会产生大量中间文件。我曾经在 80G 的虚拟机上编译到一半磁盘满了,那叫一个尴尬。

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。

小技巧:建议创建一个 Python 虚拟环境来隔离 OpenHarmony 的依赖,避免和系统其他项目冲突。
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
注意:如果网络访问不了 Google 的域名,可以用国内的镜像源:
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。

经验之谈:第一次同步代码可能需要 30 分钟到 1 小时,取决于你的网速。如果中途断了,重新执行 repo sync 会断点续传,不用从头开始。

2.4 本章知识体系

下面这张图把本章的核心内容串起来了,你可以对照着检查自己有没有遗漏:

开发环境搭建知识体系 开发环境搭建核心流程 Ubuntu 环境准备 交叉编译工具链 repo 工具配置 系统安装 依赖包安装 ARM 官方工具链 OH 专用工具链 repo 安装 代码同步 环境搭建是后续所有开发的基础,务必按步骤验证通过

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 编译了。

最后提醒一句:环境搭建这件事,一次配好,后面省心。别嫌麻烦,每一步都验证通过再往下走。我见过太多人图快跳过验证,结果编译时报错又回头查环境,反而更慢。