本文档介绍如何在 Windows 系统中搭建 OpenHarmony C/C++ 三方库交叉编译开发环境,涵盖虚拟机配置和交叉编译工具链的完整安装流程。

目录


一、环境准备

1.1 系统要求

  • Windows 10 版本 2004 及以上(内部版本 19041 及以上)
  • Windows 11

可通过 Win + R 输入 winver 检查 Windows 版本。

1.2 Windows 虚拟化功能启用

启用 WSL(Linux 子系统):

  1. 已经下载WSL
  2. 以管理员身份打开 PowerShell
  3. 运行以下命令:
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 安装

  1. 打开 Microsoft Store
  2. 搜索 Ubuntu
  3. 选择 Ubuntu 20.04.6 LTS 并安装

方式二:通过命令行安装

在管理员模式的 PowerShell 或 Windows 命令提示符中运行:

wsl --install

此命令将默认安装 WSL 2 和最新的 Ubuntu Linux 发行版。待安装完成后重启计算机。

方式三:手动导入 Ubuntu 镜像

  1. 下载 Ubuntu 镜像文件:fbb_ws63_wsl.tar
  2. 链接地址:https://hispark-obs.obs.cn-east-3.myhuaweicloud.com/fbb_ws63_wsl.tar
  3. 运行 Ubuntu 20.04.6 LTS

验证 WSL 安装:

wsl --list

第一次运行WSL需要设置用户名和密码( 密码输入时不回显,看不到字符是正常的,输入完直接回车即可)

2.2 VMware 方式

对于需要完整 VMware 虚拟化环境的开发者:

  1. 安装 VMware 虚拟机软件
  2. 创建新的虚拟机
  3. 安装 Ubuntu 系统
  4. 配置网络和共享文件夹

三、交叉编译环境配置

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

检查是否包含以下基本编译命令:

  • gcc
  • cmake
  • make
  • pkg-config
  • autoconf
  • autoreconf
  • automake

若存在未安装的命令,执行自动安装:

python3 check_env.py -i

出现下面这张照片即可。
在这里插入图片描述


四、OpenHarmony SDK 下载与配置

4.1 SDK 下载

从以下渠道获取 SDK 链接:

方式一:OpenHarmony SDK 官方发布渠道

  1. 打开 OpenHarmony SDK 官方发布渠道
  2. 选择最新版本
  3. 在目录中点击"从镜像站点获取"
  4. 复制"标准系统 Public SDK 包(Windows/Linux)"的链接

方式二:从每日构建获取

  1. 打开 每日构建
  2. 项目栏选择"openharmony"
  3. 分支栏选择当前最新版本(如 OpenHarmony-6.0.0-Release)
  4. 找到 ohos-sdk-fullohos-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>/


参考资源

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐