本文目的
近年来,LLVM编译器项目凭借其良好的架构及友好的license,社区活跃度增加明显,成为与GCC项目并列的开源的编译器巨头之一。目前一些OS社区(如openEuler社区)的软件包仍默认使用GCC工具链编译构建,本篇文章调研在RPM打包时如何切换构建工具链。
相关概念
- RPM Package Manager (RPM) 是一个强大的命令行驱动的软件包管理工具,用来安装、卸载、校验、查询和更新 Linux 系统上的软件包。
- YUM:RPM包管理工具,相比RPM工具,YUM可以自动设备软件包依赖关系,自动安装相关软件包。
- rpmbuild:RPM软件包打包工具,根据SPEC文件引导创建rpm的二进制软件包和源码软件包。
- SPEC文件:spec文件中包含了软件包的诸多信息,如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、安装时要执行什么操作,以及软件包所要包含的文件列表等。
- Clang:LLVM编译器项目C/C++前端。
实现方案
以名为test的软件包为例,假设此软件包默认用GCC构建,则可以通过如下步骤切换成Clang+LLVM。
- 在test.spec中,设置clang选项的默认值。
值得注意的是,bcond_with和bcond_without的意义如下:# Option to enable compiling with clang,default is gcc %bcond_with clang【%bcond_with defaults value to 0】
【%bcond_without defaults value to 1】

本文介绍如何在RPM打包过程中切换构建工具链为Clang+LLVM。通过修改SPEC文件中的配置,设置编译器工具链,使能Clang构建,实现了与GCC工具链的切换。
最低0.47元/天 解锁文章
864





