Page 36 - 《软件学报》2026年第6期
P. 36
屈晟 等: 面向 RISC-V 指令集多样性的兼容性感知多层级构建方法 2355
为确保从 LLVM IR 到最终 ELF 格式转换过程的可复现性与准确性, 包装脚本自动记录原始的 clang 动态
链接命令到一个专门生成的_cmd 文件中. 随后, RuyiBuild 包装脚本进一步修改该_cmd 文件, 将原始命令中所
有的.o 目标文件引用统一替换为刚合并生成的单一 LLVM IR 文件, 并显式指定使用 LLVM 工具链中的 lld 链
接器 (通过添加-fuse-ld=lld 选项). 这一设计选择源于传统 GNU 链接器 (ld) 无法直接识别 LLVM IR 文件格式的
问题.
此外, 针对动态链接过程中可能涉及的符号版本控制脚本 (如--version-script 选项指定的版本控制脚本), 包装
脚本自动复制该脚本文件至 LLVM IR 输出路径下, 并统一文件命名格式, 以确保转换过程中符号版本控制的一致
性与精确性. 这种自动化的脚本处理机制进一步保障了 RuyiBuild 的完整性与易用性.
3.3 LLVM IR 文件部署与发行版 RPM 自动化集成机制的设计与实现
当前 Linux 上的主要软件分发方式为各大 Linux 发行版, 包括 openEuler、Debian、Fedora、Ubuntu 等. 它们
分别使用 RPM 或 Deb 等二进制软件包格式. 如果不能与这些发行版进行紧密的集成, 将很大程度上限制本方法
的广泛使用. 而当前主要发行版的软件打包方式往往非常复杂, 如果在这种复杂性上过分增加新的复杂度, 很可能
无法为各发行版所接受. 为了有效解决 RISC-V 架构生态系统中软件分发场景下的复杂性与碎片化问题, RuyiBuild
工具链提出了一套完善的 LLVM IR 文件部署机制与发行版 RPM 软件包自动化集成方案. 该机制旨在实现对
LLVM IR 文件与传统 ELF 文件在系统部署阶段的结构一致性管理, 同时自动生成符合主流 Linux 发行版规范的
软件包, 以便于终端设备与云端环境的统一部署与更新.
具体而言, 在软件构建阶段, RuyiBuild 工具链通过透明化包装技术, 同时生成传统 ELF 格式文件和与平台无
关的 LLVM IR 文件, 这些 LLVM IR 文件统一存储于用户指定的环境变量 LLVMIR_BASEDIR 路径下. 为了确保
LLVM IR 文件在软件安装与部署环节中的结构与传统 ELF 文件保持一致, RuyiBuild 对系统常用的部署相关工
具 (如 install、ln) 进行了透明的包装扩展, 安装过程如附录 A.1 所示.
通过自动化的文件安装与软链接镜像机制, RuyiBuild 工具链确保了 LLVM IR 文件与传统 ELF 文件结构严
格对应, 从而极大方便了后续的跨平台转换与统一管理.
在发行版软件包自动化生成与 RPM 集成方面, RuyiBuild 工具链提出了一套自动扫描与 RPM 软件包生成机
制. 具体实现中, 在整体软件构建过程完成后, RuyiBuild 工具链自动执行扫描命令, 如附录 A.2 所示, 以自动化方
式查找安装根目录 (BUILDROOT) 下所有生成的 LLVM IR 文件及其辅助文件.
扫描完成后, RuyiBuild 工具链自动生成对应的 RPM 软件包规范文件 (RPM SPEC 文件), 并调用 RPM 构建工
具, 自动生成包含这些 LLVM IR 文件的 RPM 软件包 (如 example-llvmir.rpm). 在 RPM SPEC 文件自动化生成时,
RuyiBuild 会自动添加必要的 RPM 宏定义与安装脚本, 以确保 RPM 软件包安装后系统内同时部署 LLVM IR 文
件与传统 ELF 文件, 如附录 A.3 所示.
用户安装该 RPM 软件包之后, 系统将同时拥有传统的 ELF 格式文件与 LLVM IR 文件, 分别位于标准系统路
径 (如/usr/lib64) 与专用 LLVM IR 路径 (如/usr/lib64/llvmir) 下. 这种自动化 RPM 集成机制极大简化了软件发行版
的维护成本, 便于用户与开发人员统一维护和升级.
此外, RuyiBuild 还提供了 RPM 安装后触发 LLVM IR 转换的自动化机制. RPM 安装完成后, 会自动调用后台
服务进程, 触发后续客户端设备或云端环境中的转换任务, 以确保安装的软件在目标设备上经过精细化优化与适
配. 这种机制进一步确保了 RuyiBuild 工具链从构建、部署到最终优化部署的一体化、自动化流程. 通过上述详
细的自动化文件部署机制与 RPM 发行版集成流程, RuyiBuild 工具链实现了对 LLVM IR 文件与传统 ELF 文件的
统一结构管理与自动化软件包集成, 显著简化了跨平台软件部署与维护过程, 极大提高了 RISC-V 生态系统的软
件发行与部署效率.
3.4 客户端与云端 LLVM IR 动态转换与资源自适应调度机制的设计与实现
将 LLVM IR 转换为最终的二进制文件, 需要耗费大量的计算资源, 主要包括 CPU 和内存. 而用户终端设备,
往往性能并不充足, 同时对于响应时间、续航能力、噪声控制等方面有着苛刻要求. 为进一步提高 RISC-V 生态

