中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

编译器自动修复工具使用指导

工具支持的操作系统和GCC版本

工具支持的操作系统和GCC版本如表1所示。

表1 工具支持的操作系统和GCC版本

操作系统

GCC版本

BC-Linux 7.6/7.7

GCC 4.8.5/4.9.3/5.1.0/5.2.0/5.3.0/5.4.0/5.5.0/6.1.0/6.2.0/6.3.0/6.4.0/6.5.0/7.1.0/7.2.0/7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

CentOS 7.4/7.5/7.6/7.7

GCC 4.8.5/4.9.3/5.1.0/5.2.0/5.3.0/5.4.0/5.5.0/6.1.0/6.2.0/6.3.0/6.4.0/6.5.0/7.1.0/7.2.0/7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

CentOS 8.0

GCC 8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

CentOS 8.1/8.2

GCC 8.3.0/9.1.0/9.2.0/9.3.0

Debian 10

GCC 8.3.0/9.1.0/9.2.0/9.3.0

Deepin 15.2

GCC 6.3.0/6.4.0/6.5.0/7.1.0/7.2.0/7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

iSoft 5.1

GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

Kylin V10 SP1/SP2

GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

LinxOS 6.0.90

GCC 6.3.0/6.4.0/6.5.0/7.1.0/7.2.0/7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

NeoKylin V7U6

GCC 4.8.5/4.9.3/5.1.0/5.2.0/5.3.0/5.4.0/5.5.0/6.1.0/6.2.0/6.3.0/6.4.0/6.5.0/7.1.0/7.2.0/7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

openEuler 20.03/LTS SP1/LTS SP2/LTS SP3

GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

SUSE SLES15.1

GCC 7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

Ubuntu 18.04.x

GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

Ubuntu 20.04.x

GCC 9.3.0

UOS 20 SP1

GCC 8.3.0/9.1.0/9.2.0/9.3.0

uosEuler 20

GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

UOS 20-1020e

GCC 7.3.0/7.4.0/8.1.0/8.2.0/8.3.0/9.1.0/9.2.0/9.3.0

  • 以上列表以操作系统默认支持的GCC版本为准,如果服务器操作系统升级过GCC版本,可能存在兼容性问题。
  • 以上支持的GCC版本都是指GNU官方的GCC分支,不推荐用户基于鲲鹏GCC来使用此编译器自动修复工具。

配置环境

使用该功能需要配置对应的环境,可以通过以下步骤进行:

  1. 下载相关软件包。
  2. 安装内存一致性修复组件。
    1. 解压安装包。
      1
      tar xf gcctool.tar.gz
      

      解压后确认“gcctool/bin”目录下有以下文件:

      gcctool,gcctool-bin,libstdc++.so.6

    1. 配置环境变量。

      “gcctool”放入安装目录,配置环境变量:

      1
      export PATH=/path/to/gcctool/bin:$PATH
      
  3. 合入GCC patch。

    如果提示“‘patch’command not found”,则请先安装:

    Debian系列:

    1
    apt install patch
    

    RHEL系列:

    1
    yum install patch
    
    1
    2
    cd /gcc/source/root/dir
    patch -p1 < /path/to/gcc/patch/file
    
  4. 编译GCC。

    GCC源码编译操作请参考GCC官方文档,合入的patch对GCC编译依赖组件和编译过程没有影响,任何GCC编译问题可以询问GNU社区

工具使用

准备好环境之后再执行以下步骤使用工具:

  1. 设置内存一致性修复组件优化模式。
    1
    export HW_DEBUG=[ 0 | 1 | 2 ]
    

    编译组件支持通过环境变量配置修复优化模式,默认级别为0。

    • 0表示关闭内存一致性修复功能。
    • 1表示应用组件优化规则,可以减少性能损失。
    • 2表示使用最安全的修复策略,性能损失较大。

    默认优化模式为0,表示关闭内存一致性修复功能,不会做任何修复相关的操作。

    若用户需使用内存一致性修复组件优化,请自行设置其他优化模式。

  2. (可选)定义自动修复源码范围。
    1. 工具允许用户自定义源码修复范围,以文件或函数为单位。配置允许列表后,修复组件只对列表内的内容进行修复。允许列表的格式如下:
      • 文件列表以“files:”开头,每个文件独占一行。
      • 文件使用绝对路径。
      • 支持C/C++/Fortran格式的文件,不支持纯汇编文件。
      • 函数列表以“functions:”开头,每个函数独占一行。
      • 支持C/C++普通函数,不支持模板或具有abi_tag属性的函数。

      以下为允许列表的格式示例:

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      files:
        /path/to/file/a
        /path/to/./file/b
        /path/to/../file/c
        /path/to/file/d
      functions:
        func_a
        func_b()
        func_c(int xxx)
        int func_d()
        classA::func_e
        ns::classB::func_f()
        std::string nsA::nsB::classC::func_g(int xxx)
      
    2. 修复组件获取允许列表路径。

      通过设置环境变量,指定允许列表路径,默认不设置。

      “export AUTOFIXLIST=/path/to/allowlist”

  3. 编译软件。

    用户可以编译软件,编译过程没有变化。

    之前的编译过程中如果使用了-pipe编译选项,需要移除,不会影响原编译结果。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词