在centos 6.5上离线升级gcc及make编译遇到的一些错误

本文详细阐述了安装gcc前的依赖安装技巧,包括gmp, mpfr, mpc的编译步骤,并强调新版本gcc对isl工具的依赖。遇到的编译错误如OpenBLAS和项目特定的`vpand'错误,通过调整Makefile中的编译选项得到解决。关键在于理解并正确配置编译参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

依赖安装

安装gcc之前一定要先把一些依赖安装好,这里需要先安装gmpmpfrmpc三个依赖,如果是离线安装的话,需要在可以联网的地方先下载好(下载地址),编译安装过程可以参考这里(注意:这三个依赖之间也存在依赖关系,安装顺序不能错)。

新版本的gcc需要用到isl工具,否则编译项目时可能会报出找不到libisl.so.15错误。离线安装的话,下载地址,可参考这里安装。

安装gcc

根据自己需要安装的版本下载gcc,具体下载安装过程可参考这里,需要注意的是,在配置的时候根据自己的需要配置,比如,自己的项目要用到gfortran,因此在配置的时候需要加上--enable-languages=c,c++,fortran,否则,自行安装gfortran时一定要和安装的gcc版本对应,不然的话,可以会在编译项目时报出找不到-lgfortran的错误(当然,其它的可能原因)。

其它编译错误

离线安装OpenBLAS时,报出不能识别某些命令,比如-mavx,根据原作者给出的方案,使用make TARGET=NEHALEM代替make编译,问题解决。

但是,又出现了新的错误,如下

/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function `_start': (.text+0x20): undefined reference to `main' collect2: error: ld returned 1 exit status

Baidu, google了很久,解决方案各式各样,但在我这里都没能解决问题,然而make clean一下重新编译,问题解决。

make编译自己的项目时,报出了下面的错误

/tmp/ccLPRQpl.s:1147: Error: suffix or operands invalid for `vpand'

根据这里的提示,应该是项目的Makefile文件中编译附加的一些优化指令选项的问题,我的Makefile中有-march=native选项,这样设置可能意味着让gcc自动检测设置合适的标记,可能会由于其他一些原因导致设置了不正确的标记或与我们项目的需求不匹配的标记,手动设置为与自己系统匹配的标记,问题解决。下面列举几个例子(参考):

CentOS release 6.5 (Final) - -march=corei7-avx

CentOS Linux 7 (Core) - -march=core-avx-i

Debian GNU/Linux 7 (wheezy) - -march=core-avx2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值