1. lycium_plusplus是什么?

lycium_plusplus 是一个专为 OpenHarmony 及鸿蒙 PC 环境设计的 C/C++ 编译框架,主要用于简化三方库的编译、构建和打包流程。它基于 lycium 编译框架进行增强,支持一键构建依赖关系树,并提供对多版本库的编译能力,尤其适用于在鸿蒙 PC 系统上移植和编译命令行工具或库文件(如 treex264 等)。


1.1 主要特性:

  • 一键构建依赖:自动解析并构建项目依赖关系,无需手动配置复杂编译流程。
  • 支持外部仓适配:通过 outerrepo/module.json 配置外部代码仓库(如 Git 仓库),实现独立发布和动态集成。
  • 生成 HNP 包:支持生成 .hnp 格式的鸿蒙系统打包文件,便于作为组件与应用一同安装。
  • 跨平台编译:支持在 Linux(如 Ubuntu)、Windows、macOS 上进行交叉编译,生成适用于鸿蒙 PC(ARM64 架构)的可执行程序。
  • 本机编译支持:鸿蒙 PC 系统升级至 6.0.0.115 或以上版本后,可直接在设备上使用 build_local.sh 脚本进行本机编译,无需交叉编译环境。

1.2 使用方式:

    1. 获取源码
      通过 Git 克隆项目仓库:
    git clone https://gitcode.com/OpenHarmonyPCDeveloper/lycium_plusplus.git
    
    1. 环境准备
    • 交叉编译环境(在 Linux/macOS/Windows 上):需安装基础工具链(如 clangcmakeninja)。
    • 鸿蒙 PC 本机编译:需在鸿蒙 PC 上安装以下应用:
      • DevBox:提供编译工具链(clang、cmake、make、hdc、hnpcli 等)。
      • GitNext:用于代码管理。
      • Python 安装器:提供 Python 3.12 运行环境。
      • BiShengJDK:提供 Java 虚拟机环境(部分脚本依赖)。
    1. 构建示例(以 tree 命令为例)
    • 交叉编译(在 Linux 上):
      cd lycium_plusplus/lycium
      ./build.sh tree
      
    • 本机编译(在鸿蒙 PC 上):
      cd lycium_plusplus/lycium
      ./build_local.sh tree
      
    1. 结果验证
      构建成功后,可在以下路径找到产物:
    • 可执行程序:usr/tree/arm64-v8a/bin/tree
    • HNP 打包文件:output/arm64-v8a/tree.hnp

1.3 适用人群:

  • 普通开发者:推荐使用 lycium_plusplus,其标准化模板和依赖管理大幅降低移植门槛。
  • 资深开发者:若需高度定制化编译流程,可选择“自制轮子”方式,直接调用 OHOS SDK 工具链。

注意事项

  • build.sh(旧框架)已停止维护,建议统一使用 lycium_plusplus
  • 在鸿蒙 PC 上编译时,若遇到 detected dubious ownership in repository 错误,可执行:
    git config --global --add safe.directory /path/to/your/repository
    
  • 若出现 No such file or directory 错误,可手动在 lycium/ 目录下创建 tmp 文件夹。

该项目目前主要由社区驱动,官方文档和工具链持续更新中,建议关注其 GitCode 仓库 获取最新动态。


2. 实验过程:

本人使用的是vagrant ubuntu 22.04的镜像包进行的测试:

在这里插入图片描述
先可以使用apt update命令来完成包的更新:
在这里插入图片描述

2.2 安装必备相关的包:

安装一些必备的包,用于命令行的适配:

sudo apt install -y curl git vim gcc g++ make pkg-config autoconf automake patch libtool autopoint gperf tcl8.6-dev wget unzip gccgo-go flex bison premake4 python3 python3-pip ninja-build meson sox gfortran subversion build-essential module-assistant gcc-multilib g++-multilib libltdl7-dev cabextract libboost-all-dev libxml2-utils gettext libxml-libxml-perl libxml2 libxml2-dev libxml-parser-perl texinfo xmlto po4a libtool-bin yasm nasm xutils-dev libx11-dev xtrans-dev cmake

在这里插入图片描述

E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.

当遇到错误提示 E: dpkg was interrupted, you must manually run ‘sudo dpkg --configure -a’ to correct the problem 时,说明系统中某些软件包的安装或配置过程被中断,导致 dpkg 状态不一致。为了解决这个问题,你可以按照以下步骤操作:

首先,执行以下命令来修复未完成的软件包配置:

sudo dpkg --configure -a

在这里插入图片描述
接下来,再次安装就可以了:
在这里插入图片描述

这里可以稍微注意一下在后面安装的时候,发现没有cmake命令,所以,上面就直接把命令补充完整即可。
在这里插入图片描述


2.2 下载ohos-sdk(版本:OpenHarmony_6.1.0.28):

打开每日构建页openHarmony CI页面,找到ohos-sdk-full这个流水线,点击这个名称进入详情页面。
在这里插入图片描述

进入详情,可以在一个构建成功的流水线,在“下载链接”查看详情,这里有一个全量包,可以点击“载下链接”即可,这里可以直接复制一下这个链接:

在这里插入图片描述

直接使用wget将这个包下载下来,我们可以看到这个包的大小有2.33G:

wget https://cidownload.openharmony.cn/version/Daily_Version/OpenHarmony_6.1.0.28/20260120_120146/version-Daily_Version-OpenHarmony_6.1.0.28-20260120_120146-ohos-sdk-full.tar.gz

在这里插入图片描述
使用tar来解压这个gz压缩包:

tar xf version-Daily_Version-OpenHarmony_6.1.0.28-20260120_120146-ohos-sdk-full.tar.gz

在这里插入图片描述

接下来,我们进入linux目录中,我们解压native模块:

unzip -q native-linux-x64-6.1.0.28-Beta1.zip

在这里插入图片描述

同时,再次解压toolchains模块:

unzip -q toolchains-linux-x64-6.0.0.46-Beta1.zip

在这里插入图片描述


2.3 设置环境变量:

这里我们设置一下全局的环境变量:

export OHOS_SDK=~/harmonypc/linux
echo $OHOS_SDK

在这里插入图片描述

环境变量设置完成后,查看一下2个核心工具:clang和binary-sign-tool是否存在:

在这里插入图片描述


3. 配置lycium_plusplus:

基于openharmony cpp 编译框架lycium的增强:

    1. 针对目标产物,构建依赖关系树,一键构建
    1. 对于三方库的HPKBUILD,提供多版本构建能力,代码仓脱离本仓独立发布,可通过三方件源码仓获取编译
    1. 提供hnp构建产物的生成,支持HarmonyOS使用
    1. 提供在华为电脑上直接编译的支持
    1. 产物针对开源声明进行聚合,生成html文件

在这里插入图片描述

3.1 下载lycium_plusplus到本地:

git clone https://gitcode.com/OpenHarmonyPCDeveloper/lycium_plusplus.git

在这里插入图片描述

3.2 外部适配仓参与构建:

本项目新增目录external_deps用于临时存放外部仓,外部仓信息存放在external_deps/module.json中

该文件中包含的关键要素如下:

    "module" : [
        {
            "name" : "tree",
            "branch" : "ohos_2.2.1",
            "version" : "2.2.1",
            "type" : "git",
            "url" : "https://gitcode.com/OpenHarmonyPCDeveloper/ohos_tree.git"
        }
    ]
  • name为模块名称,如上述示例中的tree
  • url为适配仓代码地址,以及适配仓所对应的原生代码tree的版本信息version
  • branch为适配仓为该对应关系中适配仓的对应分支信息
  • type为适配仓托管类型的下载方式,如上述中,ohos_tree适配仓的下载方式为git(其他获取源码方式待扩展)

在这里插入图片描述

适配完成后,可以按照原生编译的方式执行,仍以tree举例:

cd lyium
./build.sh tree

在这里插入图片描述

这里可以看到ALL JOBS NODE!!就表示可以完成了。

在这里插入图片描述


3.3 产物获取:

获取编译产物

可在lycium/usr/tree/下获取对应架构下的二进制产物
可在lycium/output//下获取对应架构下的归档产物

在这里插入图片描述


总结:

lycium_plusplus是专为OpenHarmony及鸿蒙PC设计的C/C++编译框架,支持一键构建依赖关系树和多版本库编译。它简化了三方库的编译流程,可生成HNP格式安装包,支持Linux/Windows/macOS交叉编译及鸿蒙PC本机编译(需6.0.0.115+版本)。实验在Ubuntu 22.04环境下完成,通过安装必备工具链、下载OHOS SDK并设置环境变量后,即可使用该框架编译命令行工具。项目适合普通开发者快速移植库文件,资深开发者也可基于OHOS SDK进行深度定制。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐