Ubuntu如何搭建OpenHarmony_6.1.0.28的lycium_plusplus及鸿蒙 PC 环境设计的 C/C++ 编译框架

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 克隆项目仓库:
    bash 复制代码
    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 上):

      bash 复制代码
      cd lycium_plusplus/lycium
      ./build.sh tree
    • 本机编译(在鸿蒙 PC 上):

      bash 复制代码
      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 错误,可执行:

    bash 复制代码
    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 安装必备相关的包:

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

js 复制代码
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
js 复制代码
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 状态不一致。为了解决这个问题,你可以按照以下步骤操作:

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

js 复制代码
sudo dpkg --configure -a

接下来,再次安装就可以了:

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


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

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

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

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

js 复制代码
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压缩包:

js 复制代码
tar xf version-Daily_Version-OpenHarmony_6.1.0.28-20260120_120146-ohos-sdk-full.tar.gz

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

js 复制代码
unzip -q native-linux-x64-6.1.0.28-Beta1.zip

同时,再次解压toolchains模块:

js 复制代码
unzip -q toolchains-linux-x64-6.0.0.46-Beta1.zip

2.3 设置环境变量:

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

js 复制代码
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到本地:

js 复制代码
git clone https://gitcode.com/OpenHarmonyPCDeveloper/lycium_plusplus.git

3.2 外部适配仓参与构建:

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

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

js 复制代码
    "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举例:

js 复制代码
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进行深度定制。

相关推荐
VekiSon2 小时前
ARM架构——C 语言+SDK+BSP 实现 LED 点灯与蜂鸣器驱动
c语言·开发语言·arm开发·嵌入式硬件
南村群童欺我老无力.2 小时前
Flutter 框架跨平台鸿蒙开发 - 每日食谱推荐应用开发教程
flutter·华为·harmonyos
猛扇赵四那边好嘴.2 小时前
Flutter 框架跨平台鸿蒙开发 - 表情包本地管理器应用开发教程
flutter·华为·harmonyos
不会写代码0002 小时前
Flutter 框架跨平台鸿蒙开发 - 节日礼物清单应用开发教程
flutter·华为·harmonyos·节日
摘星编程2 小时前
React Native鸿蒙:LayoutAnimation配置弹簧动画
react native·react.js·harmonyos
移幻漂流2 小时前
C/C++内存掌控之道:从内存泄漏到零开销抽象的进阶之路
java·c语言·c++
深海的鲸同学 luvi2 小时前
在鸿蒙设备上使用NexServer快速部署网站
harmonyos·网站部署·nexserver
进击的小头2 小时前
Git在C项目中的分支策略和规范
c语言·开发语言·git
彭不懂赶紧问3 小时前
鸿蒙NEXT开发浅进阶到精通16:从零调试鸿蒙内置AI类API文字转语音场景
华为·harmonyos·鸿蒙·文字转语音