蓝香蕉代码 |【鸿蒙电脑开发编译C/C++】
设备:我使用的MateBook Pro已经升级到6.0.0.115版本,建议升级到该版本以上代码管理工具GitNext,作为代码管理工具下载管理三方库等,下载后可在系统终端中使用(个人推荐),也可以使用界面管理编译工具链DevBox,包含了llvmclangautoconfbashcmakemakeninjahdchnpclim4等编译基础工具,安装后可在系统的终端中使用Python环境Pytho
lycium_plusplus介绍
lycium++支持鸿蒙电脑使用
上次我们介绍了lycium++框架的扩展,最近针对在鸿蒙电脑上使用框架也进行下介绍
如何使用
解决了什么问题
lycium++框架支持在win/mac/linux上进行交叉编译,支持一件打包hnp文件,通过这些hnp作为组件与应用一起安装到鸿蒙电脑上,在HarmonyOS上使用该框架也成为了可能。本次我们将框架在鸿蒙电脑上进行了适配,通过交叉编译解决了在鸿蒙电脑上执行编译的工具最小集,并伴随DevBox、Python安装器、DevNode-OH、GitNext几个核心应用的上架,解决了在鸿蒙电脑中,通过命令行编译C/C++代码的核心问题。
环境介绍
- 设备:我使用的MateBook Pro已经升级到
6.0.0.115版本,建议升级到该版本以上 - 代码管理工具:
GitNext,作为代码管理工具下载管理三方库等,下载后可在系统终端中使用(个人推荐),也可以使用界面管理 - 编译工具链:
DevBox,包含了llvm、clang、autoconf、bash、cmake、make、ninja、hdc、hnpcli、m4等编译基础工具,安装后可在系统的终端中使用 - Python环境:
Python安装器,包含了python3.12的运行时,下载后可在终端中执行python脚本 - Java环境:
BiShengJDK8-OH\BiShengJDK17-OH,用于提供Java虚拟机环境,这个在之前的文章编译获取鸿蒙版本JDK中也讲到过(我这里使用的是JDK17)
以上几个应用是必须要下载的,lycium++环境非常依赖这几个核心环境,GitNext下载后需要手动完成密钥设置,具体设置方式如下
git config --global user.name <yourname>
git config --global user.email <youremail>
ssh-keygen -t rsa -b 2048 -C <youremail>
cat ~/.ssh/id_rsa.pub
把拿到的公钥配置到代码仓托管平台中,如gitcode托管仓中,可以参考他的详细配置提示
其他几个应用在应用市场搜索即可,我使用的IDE主要是CodeArts
应用市场:BiShengJDK17-OH
应用市场:DevBox
应用市场:Python安装器
应用市场:GitNext
CodeArts IDE 通过应用市场->我的->应用尝鲜 搜索CodeArts安装下载
修改介绍
本次修改了在鸿蒙电脑上运行的环境配置,主要修改如下:
- 增加了
build_local.sh本机构建入口 lycium/script/build_hpk.sh调整了在执行build_local.sh时,仅构建适配平台的架构,当前适配了HarmonyOS,因此在TARGET_HARMONYOS变量为华为鸿蒙电脑构建的标识,在执行arch选择时,仅执行arm64-v8a- 由于大部分脚本编写都是基于bash的,为了保证兼容性,将sh脚本的解释器指定为
#!/bin/env bash
HPKBUILD适配
在框架适配后,每个ports仓仅需要适配HPKBUILD脚本即可完成本地构建适配
- 在prepare阶段,判断
TARGET_HARMONYOS变量,若为true,怎执行setHarmonyOSENV环境变量设置(该设置指定了CC/CXX等常用的构建命令) - host/type/build通过
BUILD_SYSTEM_CONFIG变量指定为aarch64-linux,欺骗config类架构判断方式 - 其他保持不变
以bash为例子ohos-bash
判断当TARGET_HARMONYOS为true时,设置本机构建环境变量setHarmonyOSENV
下载框架
安装配置好git后,可以在终端中通过执行以下命令下载框架
git clone https://gitcode.com/OpenHarmonyPCDeveloper/lycium_plusplus
构建
框架代码下载好后,按照以下方式执行构建,注意构建过程中注意弹窗,不要功亏一篑
cd lyium
./build_local.sh bash

过程中出现弹窗,点击确认才可以继续:鸿蒙电脑当前已经允许外来二进制执行了,我们提供的clang已经支持了编译后自动签名的能力,因此在脚本执行构建过程中,产生新的二进制且被脚本或编译框架调度执行,需要我们主动确认后才能继续(若需要单独签名,下一次单独介绍下)
构建结果在本机构建时均除了与交叉编译的结果同样的路径外,在lycium/uer/local下会安装所有通过脚本编译的命令,可以设置环境变量将这些命令加入到终端中,便于后续执行;该路径默认为工程下的lycium/uer/local,也可以通过设置INSTALL_LOCAL_PERFIX环境变量后执行构建以指定到您想安装的目录。
本地编译好的命令,可以直接./执行,首次执行时仍然要点击运行
超期未点击,会报operation not permitted
首次尝试可以执行./build_local.sh tree体验尝试
其他
构建结果、产物等,与交叉编译无异,经过该框架编译的二进制,在鸿蒙电脑上可以直接执行(需要我们自己确认弹窗)
下次单独介绍下如何把其他人编译好的二进制,在鸿蒙电脑上签名执行
附录
几个相关的代码仓
tree
bash
lycium_plusplus
muslc_gext
应用及环境相关工具开源应用
GitNext
BiShengJDKInstaller
bishengjdk-8
bishengjdk-17
DevPython-OH
DevBox
DevNode-OH
更多推荐





所有评论(0)