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

运行SPECCpu 2017提示'unrecognized option '-mabi=lp64'

问题现象描述

环境配置:

类别

子项

版本

硬件

CPU

鲲鹏920处理器

网络

Ethernet-GE

存储

SATA 4TB

内存

-

操作系统

CentOS

7.6.0

Kernel

-

软件

SPECCpu

2017

问题描述:

在CentOS 7.6上运行SPECCpu 2017的测试命令./runcpu -c ../config/Example-gcc-linux-aarch64.cfg intrate时,提示“'unrecognized option '-mabi=lp64'”。

关键过程、根本原因分析

从上述截图中看不到具体原因,查看文件benchspec/CPU/999.specrand_ir/build/build_base_mytest-64.0000/make.out中的信息,发现有错误打印gcc: error: unrecognized command line option '-mabi=lp64',经确认GCC是系统自带的GCC 4.8.5,该GCC版本不支持-mabi=lp64编译选项,需要升级GCC版本。

结论、解决方案及效果

需要升级GCC版本,推荐升级到GCC 7.3.0。

升级GCC

  1. 下载GCC 7.3.0版本软件包。
    wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz --no-check-certificate
  2. 解压源码包。
    tar -xf gcc-7.3.0.tar.gz
  3. 配置。
    cd gcc-7.3.0
    ./contrib/download_prerequisites

    上述命令会下载依赖包“gmp-6.1.0.tar.bz2”、“isl-0.16.1.tar.bz2”、“mpc-1.0.3.tar.gz”或“mpfr-3.1.4.tar.bz2”,如果某依赖包下载失败,可根据需要执行相应的命令下载,然后重新执行./contrib/download_prerequisites命令配置。

    wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 --no-check-certificate
    wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2 --no-check-certificate
    wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz --no-check-certificate
    wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 --no-check-certificate
  4. 创建gcc-7.3.0_build目录,配置GCC。
    mkdir gcc-7.3.0_build
    cd gcc-7.3.0_build
    ../configure --prefix=/usr/local/gcc-7.3.0 --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,fortran,lto --enable-plugin --enable-initfini-array --disable-libgcj
  5. 编译安装GCC。
    make -j 96
    make -j96 install
  6. 配置环境变量。
    1. 打开profile文件。
      vi /etc/profile
    2. 增加如下配置。
      PATH=/usr/local/gcc-7.3.0/bin:$PATH
    3. 使配置生效。
      source /etc/profile
  7. 将libstdc++.so.6添加到uar/lib64目录下。
    rm -rf /lib64/libstdc++.so.6
    cp /usr/local/gcc-7.3.0/lib64/libstdc++.so.6.0.24 /usr/lib64
  8. 制作软连接。
    cd /usr/lib64
    ln -s libstdc++.so.6.0.24 libstdc++.so.6
  9. 在/etc/ld.so.conf文件中增加如下内容。
    /usr/local/gcc-7.3.0/lib64
  10. 使配置生效。
    ldconfig

GCC/G++/C++全局增加-fsigned-char编译选项

增加-fsigned-char编译选项是因为在ARM和x86架构上针对char类型理解有差异,x86架构上默认识别char是无符号类型,ARM架构上默认识别是有符号类型,所以需要增加编译选项。

同步把/bin目录下gcc/g++/c++也修改为如下。

  1. 查看GCC安装目录。
    [root@localhost target]# which gcc
    /usr/local/gcc-7.3.0/bin/gcc
  2. 备份原来的gcc文件。
    mv /usr/local/gcc-7.3.0/bin/gcc /usr/local/gcc-7.3.0/bin/gcc-arm
  3. 新建gcc文件。
    vi /usr/local/gcc-7.3.0/bin/gcc
  4. 输入如下内容保存。
    #!/bin/sh
    gcc-arm -fsigned-char "$@"
  5. 修改gcc文件权限。
    chmod 755 /usr/local/gcc-7.3.0/bin/gcc
  6. 验证GCC版本。
    gcc -v

同样的步骤修改g++和c++。由于环境变量中优先取“/usr/local/gcc-7.3.0/bin”目录,实际/bin/gcc、/bin/c++、/bin/g++脚本中重定向到“/usr/local/gcc-7.3.0/bin”下的文件。

cd /bin
mv gcc gcc-arm
mv g++ g++-arm
mv c++ c++-arm
cp /usr/local/gcc-7.3.0/bin/gcc ./
cp /usr/local/gcc-7.3.0/bin/g++ ./
cp /usr/local/gcc-7.3.0/bin/c++ ./
搜索结果
找到“0”个结果

当前产品无相关内容

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