交叉编译.so到鸿蒙使用

以下是在 Ubuntu 20.04 系统上的操作,tpc_c_cplusplus 他是把编译的流程都给写进去了,你只需要关注你要编译的库配置好环境就行了。

第一步:下载 tpc_c_cplusplus 仓库地址:

GitCode - 全球开发者的开源社区,开源代码托管平台

openharmony-sig 组织已经写好了脚本,先进入他的 thirdparty 目录下,找你想要编译的库;

第二步:如果你里有你需要用的库,就进入到 lycium 目录下,开始尝试编译; 以 libxml2 为例编译;

复制代码
./build.sh libxml2

这个时间,如果你没配置环境变量,他会提示你的;

第三步: 配置环境变量:配置前去 下载中心 下载**command Line Tools for HarmonyOS,**下载完配置好 OHOS_SDK 以及其他编译需要用到的工具,你可以配置到全局,我这里就临时配置一下:

复制代码
export OHOS_SDK=~/home/command-line-tools/sdk/default/openharmony

export AS=${OHOS_SDK}/native/llvm/bin/llvm-as
export CC="${OHOS_SDK}/native/llvm/bin/clang --target=aarch64-linux-ohos"
export CXX="${OHOS_SDK}/native/llvm/bin/clang++ --target=aarch64-linux-ohos"
export LD=${OHOS_SDK}/native/llvm/bin/ld.lld
export STRIP=${OHOS_SDK}/native/llvm/bin/llvm-strip
export RANLIB=${OHOS_SDK}/native/llvm/bin/llvm-ranlib
export OBJDUMP=${OHOS_SDK}/native/llvm/bin/llvm-objdump
export OBJCOPY=${OHOS_SDK}/native/llvm/bin/llvm-objcopy
export NM=${OHOS_SDK}/native/llvm/bin/llvm-nm
export AR=${OHOS_SDK}/native/llvm/bin/llvm-ar
export CFLAGS="-fPIC -D__MUSL__=1"
export CXXFLAGS="-fPIC -D__MUSL__=1"

配置好后, 再运行:

复制代码
./build.sh libxml2

如果你还有工具没有安装, 他会提示你,我第一次的时候,就遇到了 cmake 没有安装的提示:

然后, 这里安装完后,还是有问题,我用默认安装的 cmake 的版本有点低,如果你也遇到,可以去下载这个:

复制代码
wget https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.tar.gz

下载完后,配置到PATH:cmake --version 查一下当前使用的版本是对的;

复制代码
export PATH=~/wgx/cmake-3.28.3-linux-x86_64/bin:$PATH
cmake --version
cmake version 3.28.3

拷贝编译工具

为了简化开发中命令的配置,我们针对arm架构以及aarch64架构集成了几个编译命令,存放在lycium/Buildtools目录下,在使用lycium工具前,需要将这些编译命令拷贝到SDK对应的目录下,具体操作如下:

复制代码
    cd lycium/Buildtools                        # 进入到工具包目录
    sha512sum -c SHA512SUM                      # 可校验工具包是否正常, 若输出"toolchain.tar.gz: OK"则说明工具包正常,否则说明工具包异常,需重新下载
    tar -zxvf toolchain.tar.gz                  # 解压拷贝编译工具
    cp toolchain/* ${OHOS_SDK}/native/llvm/bin  # 将命令拷贝到工具链的native/llvm/bin目录下

设置编译机cmake识别OHOS系统

由于sdk中的cmake版本过低, 导致很多开源库在cmake阶段报错. 这个时候就需要用户在编译机上安装一个高版本的cmake(推荐使用3.26及以上版本). 但是 cmake官方是不支持OHOS的. 解决方案:

复制代码
cp $OHOS_SDK/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/OHOS.cmake xxx(代表你编译机安装的cmake的路径)/cmake-3.28.3-linux-x86_64/share/cmake-3.26/Modules/Platform

做完以上这些,再次运行 ./build.sh libxml2

编译的产物会在 lycium/usb 目录下, 就会有 libxml2 文件夹,进入 libxml2,里面是长这样的,然后把include 和 lib 拷贝到鸿蒙工程里就可以使用了。

相关推荐
白鹿第一帅11 分钟前
【案例实战】鸿蒙元服务开发实战:从云原生到移动端,包大小压缩 96% 启动提速 75% 的轻量化设计
harmonyos·白鹿第一帅·鸿蒙元服务·csdn成都站·鸿蒙开放能力·鸿蒙学习之路·鸿蒙元服务框架
爱笑的眼睛1114 分钟前
深入理解HarmonyOS中NavDestination导航目标页的生命周期
华为·harmonyos
白鹿第一帅1 小时前
【参赛心得】鸿蒙三方库适配实战:从 Hadoop 生态到鸿蒙生态,企业级项目集成的 6 个最佳实践
harmonyos·白鹿第一帅·鸿蒙三方库·csdn成都站·鸿蒙开放能力·鸿蒙学习之路·harmonyos创新赛
纯爱掌门人3 小时前
鸿蒙端云一体化云存储实战:手把手教你玩转文件上传下载
前端·harmonyos
用户498888174373 小时前
ArkTS 语言基础 第五节:流程控制
harmonyos
小草cys4 小时前
华为910B服务器(搭载昇腾Ascend 910B AI 芯片的AI服务器查看服务器终端信息
服务器·人工智能·华为·昇腾·910b
星释4 小时前
鸿蒙Flutter三方库适配指南-04.使用MacOS搭建开发环境
flutter·macos·harmonyos
ifeng09185 小时前
HarmonyOS分布式媒体播放器——跨设备音视频无缝流转
分布式·音视频·harmonyos
爱笑的眼睛116 小时前
HarmonyOS视频编解码与转码深度探索:从原理到分布式实践
华为·harmonyos
HMS Core9 小时前
【FAQ】HarmonyOS SDK 闭源开放能力 — AppGallery Kit
华为·harmonyos