---
title: 运行SPECCpu 2017提示'unrecognized option '-mabi=lp64'
description: "环境配置："
url: https://www.hikunpeng.com/document/detail/zh/kunpenggrf/trouble/kunpenggeneral_troublecase_044.html
sourcePath: /source/zh/kunpenggrf/trouble/kunpenggeneral_troublecase_044.html
indexId: 3f61bf20f1b3f39bea0721c29065db860a0a39d675d3abc04036c05db23286f065
---
# 运行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. 配置环境变量。

  a. 打开profile文件。

```
vi /etc/profile
```


  b. 增加如下配置。

```
PATH=/usr/local/gcc-7.3.0/bin:$PATH
```


  c. 使配置生效。

```
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++ ./
```
