RPM打包时如何切换编译器工具链-创新互联

本文目的

近年来,LLVM编译器项目凭借其良好的架构及友好的license,社区活跃度增加明显,成为与GCC项目并列的开源的编译器巨头之一。目前一些OS社区(如openEuler社区)的软件包仍默认使用GCC工具链编译构建,本篇文章调研在RPM打包时如何切换构建工具链。

创新互联从2013年开始,是专业互联网技术服务公司,拥有项目网站建设、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元丹江口做网站,已为上家服务,为丹江口各地企业和个人服务,联系电话:13518219792相关概念
  • RPM Package Manager (RPM) 是一个强大的命令行驱动的软件包管理工具,用来安装、卸载、校验、查询和更新 Linux 系统上的软件包。
  • YUM:RPM包管理工具,相比RPM工具,YUM可以自动设备软件包依赖关系,自动安装相关软件包。
  • rpmbuild:RPM软件包打包工具,根据SPEC文件引导创建rpm的二进制软件包和源码软件包。
  • SPEC文件:spec文件中包含了软件包的诸多信息,如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、安装时要执行什么操作,以及软件包所要包含的文件列表等。
  • Clang:LLVM编译器项目C/C++前端。
实现方案

以名为test的软件包为例,假设此软件包默认用GCC构建,则可以通过如下步骤切换成Clang+LLVM。

  1. 在test.spec中,设置clang选项的默认值。
    # Option to enable compiling with clang,default is gcc
    %bcond_with clang
    值得注意的是,bcond_with和bcond_without的意义如下:

    【%bcond_with defaults value to 0】
    【%bcond_without defaults value to 1】

  2. 设置spec文件内部全局变量toolchain。
    %if %{with clang}
    %global toolchain clang
    %endif
    ```
  3. 根据是否打开clang编译,设置一些相应的动作,如依赖关系。
    %if %{with clang}
    BuildRequires: clang llvm
    %endif
  4. 关键的一步,设置编译器工具链。通常情况下,软件包允许开发者自定义编译器工具链,如make工具通过CC、CXX等宏设置。
    %if %{with clang}
    %global make_opts HOSTCC=clang CC=clang CXX=clang++
    %endif
  5. 执行编译
    make %{?make_opts}
  6. 软件包打包时增加–with选项,使能clang构建。
    rpmbuild -ba --with=clang test.spec

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页标题:RPM打包时如何切换编译器工具链-创新互联
浏览地址:http://pwwzsj.com/article/hcpho.html