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  生态
   31   32   33   34   35   36   37   38   39   40   41