当前位置: 首页 > news >正文

【鸿蒙PC命令行适配】基于OHOS SDK直接构建xz命令集(xz、xzgrep、xzdiff),完善tar.xz解压能力

1. 背景

近日,我在访问rust-lang.org时注意到,现已推出了适用于OpenHarmony(OHOS)平台的Rust版本。出于兴趣与探索目的,我决定下载并尝试使用这一版本。

在成功获取到rust-beta-aarch64-unknown-linux-ohos.tar.xz文件后,却发现无法直接通过鸿蒙操作系统上的tar xJf命令来解压缩该文件,提示系统中缺失xz工具。为了解决问题并增强鸿蒙PC环境下对.tar.xz格式文件的支持能力,我着手进行了xz命令及相关组件向该平台的移植工作。本文旨在分享此次移植过程中的具体步骤与经验总结,希望能够为其他开发者提供参考和帮助。

2. 编译环境准备

2.1 下载OHOS SDK

要编译鸿蒙pc版本的xz命令,需要先获取OHOS SDK,可以到https://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist 页下载。

2.2 配置OHOS SDK

下载sdk之后,解压得到ohos-sdk,然后再解压ohos-sdk/linux/native和ohos-sdk/linux/toolchains。

之后配置环境变量

exportOHOS_SDK=~/ohos-sdk/linuxexportPATH=${OHOS_SDK}/native/llvm/bin:${OHOS_SDK}/native/build-tools/cmake/bin:$PATH

3. 编译xz命令集

3.1 下载xz源码

xz源码的原始仓库维护在github上,我已经mirror到AtomGit平台,地址是https://atomgit.com/oh-tpc/xz 。

将其下载到本地:

gitclone https://atomgit.com/oh-tpc/xz.git -b v5.8

3.2 生成Makefile

xz支持2种编译框架:automake+configure+makecmake+make。这里,我们以cmake为例,进行编译。

先生成Makefile,命令如下:

mkdirbuildcdbuild cmake..

3.3 make编译

cmake成功之后,会生成Makefile,执行make命令即可触发编译。

如下图所示,编译成功后得鸿蒙PC(aarch64)架构的xz命令。

4. 测试运行

4.1 binary-sign-tool自签名

将xz工具集拷贝到鸿蒙PC之后,需要先对其进行自签名,否则无权限运行。命令如下:

binary-sign-tool sign -inFile xz -outFile xz -selfSign "1"

如上图所示,自签名之后,xz命令就可以正常执行了。

4.2 测试解压tar.xz文件

接下来,需要将xz命令所在目录添加到PATH环境,以便于让tar命令能找到并调用它来进行xz格式的解压缩。命令如下所示:

export PATH=~/bin:$PATH

如上图所示,tar xJf命令成功解压了tar.xz格式的压缩包,测试运行成功。

5. 总结

本次向OpenHarmony PC平台移植xz命令的实践,核心解决了该平台缺失.tar.xz格式解压能力的痛点。整个过程的核心难点在于适配鸿蒙专属的编译环境与权限管理机制——通过精准配置OHOS SDK环境变量、选用适配性更强的cmake编译框架,有效规避了跨平台编译中的工具链兼容问题;而binary-sign-tool自签名步骤的实施,则精准破解了鸿蒙系统对第三方二进制文件的权限限制,这也是鸿蒙平台移植工具类软件需重点关注的核心要点。

此次实践也让我们看到,鸿蒙生态的完善需要开发者通过实际需求驱动的技术探索不断补全短板,而这类常用命令行工具的移植实践,正是构建更具包容性的鸿蒙生态的重要基石。

最后,欢迎加入开源鸿蒙PC社区:https://harmonypc.csdn.net/ 一起参与鸿蒙PC的生态建设。

http://www.jsqmd.com/news/210232/

相关文章:

  • 程序员必学!大模型推理加速神器KV Cache原理与实战代码解析
  • 【MCP量子计算权威解读】:从基础理论到考点落地的完整知识图谱
  • RPA机器人流程自动化结合图像识别的典型场景
  • 告别手动查询:AI自动完成ASCII编码工作
  • 机器人视觉大脑:赋予服务机器人认知能力
  • 【企业级AI运维转型必看】:MCP AI Copilot 3大关键部署技巧
  • 1小时打造定制版POSTWOMAN:AI原型开发实战
  • 1小时打造SSL健康检查工具原型
  • Hunyuan-MT-7B-WEBUI支持HTML标签保留吗?格式化文本翻译测试
  • 万物识别可解释性:快速可视化模型注意力机制
  • Hunyuan-MT-7B-WEBUI多语言SEO内容批量生成
  • Java日志框架冲突:小白也能懂的解决方案
  • SPWM零基础入门:用快马5分钟实现第一个调制波形
  • UFS Explorer新手入门指南:从安装到使用
  • 收藏!爆火的AI Agent究竟是啥?一篇讲透+实战案例(小白/程序员必看)
  • AI如何优化10000GDCN在线测速工具的开发
  • 大学实验室准入:识别授权人员与防护装备穿戴
  • MCP云环境兼容性测试实战(覆盖95%企业级应用场景)
  • 对比测试:提示词网站如何将工作效率提升300%
  • 电路板元件识别:维修检测中的快速定位工具
  • 收藏!AI编程工具时代:程序员如何保持清醒思考与核心竞争力
  • 量子叠加与纠缠怎么考?MCP认证中你必须搞懂的6个关键问题
  • 十分钟搞定:用云端GPU训练你的第一个中文识别模型
  • 【MCP Kubernetes故障修复实战】:20年专家揭秘集群异常5大根源及恢复策略
  • OPENJDK17实战应用案例分享
  • dify插件开发实战:封装万物识别模型为可复用组件
  • MCP频繁崩溃怎么办,资深架构师亲授3大稳定加固策略
  • 小白必看:5分钟理解连接中断问题及简单解决方案
  • 艺术画作风格识别与作者归属判断的学术研究
  • seedhud与万物识别协同:构建完整数据闭环流程设计