OpenHarmony C/C++ 三方库交叉编译开发环境搭建指南
本文档介绍如何在 Windows 系统中搭建 OpenHarmony C/C++ 三方库交叉编译开发环境,涵盖虚拟机配置和交叉编译工具链的完整安装流程。
目录
一、环境准备
1.1 系统要求
- Windows 10 版本 2004 及以上(内部版本 19041 及以上)
- Windows 11
可通过 Win + R 输入 winver 检查 Windows 版本。
1.2 Windows 虚拟化功能启用
启用 WSL(Linux 子系统):
- 已经下载WSL
- 以管理员身份打开 PowerShell
- 运行以下命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
启用虚拟机平台:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
设置 WSL 默认版本为 WSL 2:
wsl --set-default-version 2
(可选)启用 Hyper-V:
以管理员身份运行以下命令启用 Hyper-V:
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
二、Linux 虚拟机安装
2.1 WSL 安装方式
方式一:通过 Microsoft Store 安装
- 打开 Microsoft Store
- 搜索
Ubuntu - 选择 Ubuntu 20.04.6 LTS 并安装
方式二:通过命令行安装
在管理员模式的 PowerShell 或 Windows 命令提示符中运行:
wsl --install
此命令将默认安装 WSL 2 和最新的 Ubuntu Linux 发行版。待安装完成后重启计算机。
方式三:手动导入 Ubuntu 镜像
- 下载 Ubuntu 镜像文件:
fbb_ws63_wsl.tar - 链接地址:
https://hispark-obs.obs.cn-east-3.myhuaweicloud.com/fbb_ws63_wsl.tar - 运行
Ubuntu 20.04.6 LTS
验证 WSL 安装:
wsl --list
第一次运行WSL需要设置用户名和密码( 密码输入时不回显,看不到字符是正常的,输入完直接回车即可)
2.2 VMware 方式
对于需要完整 VMware 虚拟化环境的开发者:
- 安装 VMware 虚拟机软件
- 创建新的虚拟机
- 安装 Ubuntu 系统
- 配置网络和共享文件夹
三、交叉编译环境配置
3.1 lycium 交叉编译框架
lycium 是一款协助开发者通过 Shell 语言实现 C/C++ 三方库快速交叉编译,并在 OpenHarmony 系统上快速验证的编译框架工具。
克隆 lycium 工程:
确保要在Linux 终端(WSL/Ubuntu) 中执行命令行,而不是Window终端。
mkdir openharmony
cd openharmony
git clone https://atomgit.com/openharmony-sig/tpc_c_cplusplus.git
lycium 目录结构:
lycium/
├── build.sh # 编译脚本
├── template/ # HPKBUILD 模板
└── usr/ # 编译产物目录
3.2 编译环境检查
克隆交叉编译环境配置脚本工程:
git clone https://atomgit.com/oh-tpc/oh-scripts.git
在 oh-scripts/linux 目录下执行检查:
cd oh-scripts/linux
python3 check_env.py
检查是否包含以下基本编译命令:
gcccmakemakepkg-configautoconfautoreconfautomake
若存在未安装的命令,执行自动安装:
python3 check_env.py -i
出现下面这张照片即可。
四、OpenHarmony SDK 下载与配置
4.1 SDK 下载
从以下渠道获取 SDK 链接:
方式一:OpenHarmony SDK 官方发布渠道
- 打开 OpenHarmony SDK 官方发布渠道
- 选择最新版本
- 在目录中点击"从镜像站点获取"
- 复制"标准系统 Public SDK 包(Windows/Linux)"的链接
方式二:从每日构建获取
- 打开 每日构建
- 项目栏选择"openharmony"
- 分支栏选择当前最新版本(如 OpenHarmony-6.0.0-Release)
- 找到
ohos-sdk-full或ohos-sdk-public行,复制下载链接
执行下载脚本:
cd ~/oh-scripts/linux
python3 download_ohsdk.py
4.2 环境变量配置
下载完成后,SDK 路径会自动配置到 ~/.bashrc:
export OHOS_SDK="/home/ubuntu/openharmony/ohos-sdk/linux"
使配置生效:
source ~/.bashrc
native 目录结构:
| 目录 | 说明 |
|---|---|
build |
cmake 依赖的配置文件 |
build-tools |
构建工具(cmake、ninja) |
llvm |
clang 编译器 |
sysroot |
sysroot 目录,包含 SDK 内部库和头文件 |
五、C/C++ 三方库交叉编译流程
5.1 HPKBUILD 配置文件
lycium 框架提供编译配置模板文件 HPKBUILD,每个目标三方库都需要提供此配置文件。
HPKBUILD 模板:
pkgname=NAME # 库名
pkgver=VERSION # 库版本
pkgrel=0
pkgdesc="" # 库描述
url="" # 官网链接
archs=("armeabi-v7a" "arm64-v8a") # CPU 架构
license=()
depends=() # 依赖库
makedepends=() # 构建依赖工具
source="https://..." # 库源码下载链接
prepare() {
cd $builddir
cd ${OLDPWD}
}
build() {
cd $builddir
${OHOS_SDK}/native/build-tools/cmake/bin/cmake "$@" -DOHOS_ARCH=$ARCH -B$ARCH-build -S./ -L
make -j4 -C $ARCH-build
ret=$?
cd $OLDPWD
return $ret
}
package() {
cd $builddir
make -C $ARCH-build install
cd $OLDPWD
}
check() {
echo "The test must be on an OpenHarmony device!"
}
cleanbuild() {
rm -rf ${PWD}/$builddir
}
5.2 三种编译方式
5.2.1 cmake 方式(以 cJSON 为例)
pkgname=cJSON
pkgver=v1.7.19
archs=("armeabi-v7a" "arm64-v8a")
license=("MIT")
source="https://github.com/DaveGamble/$pkgname/archive/refs/tags/$pkgver.tar.gz"
buildtools="cmake"
builddir=$pkgname-${pkgver:1}
5.2.2 make 方式(以 bzip2 为例)
pkgname=bzip2
pkgver=1_0_6
archs=("armeabi-v7a" "arm64-v8a" "x86_64")
buildtools="make"
prepare() {
cc=${OHOS_SDK}/native/llvm/bin/arm-linux-ohos-clang
ar=${OHOS_SDK}/native/llvm/bin/llvm-ar
ranlib=${OHOS_SDK}/native/llvm/bin/llvm-ranlib
}
build() {
make CC=${cc} AR=${ar} RANLIB=${ranlib} -j4
}
5.2.3 configure 方式(以 libuuid 为例)
pkgname=libuuid
pkgver=1.0.3
archs=("armeabi-v7a" "arm64-v8a")
buildtools="configure"
prepare() {
if [ $ARCH == "armeabi-v7a" ]; then
host=arm-linux
fi
if [ $ARCH == "arm64-v8a" ]; then
host=aarch64-linux
fi
}
build() {
../configure "$@" --host=$host
make -j4
}
六、快速编译示例
以 cJSON 为例,执行编译:
cd ~/openharmony/tpc_c_cplusplus/lycium
./build.sh cJSON
编译说明:
./build.sh # 编译 thirdparty 目录下的所有库
./build.sh cJSON # 编译指定的 cJSON 库
./build.sh aaa bbb # 编译多个指定的库
编译产物位置:
lycium/usr/cJSON/<ARCH>/
参考资源
更多推荐



所有评论(0)