Page 33 - 《软件学报》2026年第6期
P. 33

2352                                                       软件学报  2026  年第  37  卷第  6  期


                 通用  Linux  系统常见的部署策略之一       [32–34] . 然而, Multilib  也存在天然的扩展性瓶颈. 在  RISC-V  这类指令集模块
                 化程度极高的架构中, 可能的         ISA  扩展组合呈指数增长, 若逐一构建对应变体, 将导致构建与维护成本显著上升,
                 为所有扩展组合生成独立库的方式在资源有限或构建迭代频繁的场景中难以维系.
                    在  RISC-V  架构中, 传统的  IFUNC  和  Multilib  机制在支持生态兼容的同时, 也暴露出平台适配粒度粗、运行
                 能力弱、部署开销高等问题. 为此, 构建系统亟需引入面向中间表示                     (如  LLVM IR) 的统一构建中转层, 并结合平
                 台特征感知机制实现自动化分发与精细化优化. 本文提出的                    RuyiBuild  工具链, 正是在这一问题背景下设计的新
                 型构建框架.
                  2.4   基于源码的性能优化技术
                    为了让二进制代码能贴近硬件指令集和微架构特性, 研究者和工程实践者开发出各种使用最贴近硬件的编译
                 器选项制作的操作系统发行版, 如          Gentoo、FreeBSD Ports、MacPorts 等, 通过下载软件的源代码和相关编译依赖,
                 在用户设备上直接编译软件. 这样可以使用最贴近硬件的编译选项来编译软件, 得到尽可能好的性能. 这种方案需
                 要用户自己编译软件, 并且可能需要自己解决编译过程中遇到的编译失败等问题, 对用户的技术水平提出了相当
                 高的要求.
                    另外一种是基于源码的方案, 由用户从发行版的源码包                   (如  openEuler 的  src.rpm) 使用不同的选项构建二进
                 制, 并自己内部使用. 这种方案存在的问题包括: 对用户的能力提出了较高的要求; 因用户编译器、系统配置可能
                 的差异, 无法保证二进制结果的一致性; 因源码包的复杂性, 用户设置的优化选项可能无法真正被使用.

                  3   RuyiBuild  工具链的技术设计与实现

                    RuyiBuild  工具链的总体流程如图      1  所示, 核心思想是构建透明双路径编译流程, 在不改动目标软件源码与原
                 始构建系统的前提下, 化解软件兼容性和性能优化难题. 考虑到                    Linux  发行版  (如  openEuler、Debian  等) 主流的
                 RPM、Deb  二进制包分发模式, 为避免因新增复杂度难以被接受, RuyiBuild               设计了完善的     LLVM IR  文件部署机
                 制与  RPM  包自动化集成方案, 用户终端根据实际情况自主选择                 RPM  包来源. 在软件构建阶段, 借助透明化包装
                 技术同时产出传统       ELF  文件与平台无关的     LLVM IR  文件, 保障  LLVM IR  文件部署时与传统     ELF  文件结构一致,
                 助力终端与云端统一部署更新, 适配           Linux  发行版生态.

                                                               源码


                                                             RuyiBuild  透明化编译

                                         用于兼容      传统RPM            IR RPM

                                               直接安装
                                                                 安装到
                                                                单独路径
                                                用户                       云端转换
                                                终端         IR
                                                    ELF  转换
                                                    .so           选择
                                                          ELF    仓库安装    传统RPM
                                                           .so
                                                                          仓库
                                                      APP
                                                图 1 RuyiBuild  工具链总体路径

                    与此同时, 为应对      LLVM IR  在不同版本间兼容性不足的问题, RuyiBuild         设计了多层次的兼容性保障机制.
                 RuyiBuild  在生成  LLVM IR  时记录完整的编译与链接命令及所用          LLVM  版本, 以确保后续转换过程版本一致; 在
                 编译阶段采用双路径编译与透明包装机制, 确保               LLVM IR  文件与传统    ELF  文件路径结构严格对应; 在       IR  转换阶
   28   29   30   31   32   33   34   35   36   37   38