Linux系统下多版本gcc使用问题记录

Linux系统下多版本gcc使用问题记录

一、背景

系统:CentOS 7.6

gcc版本:4.8.5

需求gcc版本:8.3.0

编译开源社区中5.10版本内核代码,制作相应的kernel、kernel-devel、kernel-debug等rpm包,而5.10内核对gcc编译器的版本要求为最低4.9,因此CentOS系统中自带的4.8.5版本的gcc无法满足编译5.10内核的要求,因此需要升级gcc版本,采取在编译内核态时使用升级的高版本gcc,而默认的用户态编译依然使用CentOS中默认的4.8.5;

二、gcc编译安装

源码下载地址:http://ftp.gnu.org/gnu/gcc/

选择一个大于4.9版本的gcc源码下载即可;

关于基于gcc源码进行编译安装升级过程,请参考网站:

https://www.cnblogs.com/dinghailong128/p/12153330.html

注意的是在生成Makefile文件时,增加编译安装路径,–prefix=/usr/local/gcc-8.3.0

./configure --prefix=/usr/local/gcc-8.3.0 -enable-checking=release -enable-languages=c,c++ -disable-multilib --enable-linker-build-id

那么后续gcc的安装产生的所有文件都会在你指定的目录下,(make & make install的过程可能会耗时比较久)安装后该路径下的内容如下图所示:
在这里插入图片描述
而bin目录下的即为可执行文件:
在这里插入图片描述

3、两套gcc版本共存方案

CentOS默认的gcc在/usr/bin/目录下,执行gcc -v时即可查看到的版本为gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ;而执行/usr/local/gcc-8.3.0/bin目录下的gcc -v即为升级后的gcc编译器。

后续在编译时只需要在对应的Makefile文件中指定对应版本的编译器即可;例如:

原始的Makefile中指定的编译器为默认的gcc:

HOSTCC       = gcc
HOSTCXX      = g++

更改为如下的形式在编译时即使用8.3.0版本的gcc进行编译了。

HOSTCC       = /usr/local/gcc-8.3.0/bin/gcc
HOSTCXX      = /usr/local/gcc-8.3.0/bin/g++

同样还需更改的一个地方为:

CC              = $(CROSS_COMPILE)gcc
====》
CC              = $(CROSS_COMPILE)/usr/local/gcc-8.3.0/bin/gcc

还有一种形式是设置软连接,将/usr/local/gcc-8.3.0/bin/下的可执行文件软连接到/usr/bin下,

例如:

ln -s /usr/local/gcc-8.3.0/bin/gcc /usr/bin/gcc-8.3.0
ln -s /usr/local/gcc-8.3.0/bin/g++ /usr/bin/g++-8.3.0

这样在系统中执行gcc-8.3.0 -v即可;

而Makefile中的更改如下:

HOSTCC       = gcc-8.3.0
HOSTCXX      = g++-8.3.0  
CC           = $(CROSS_COMPILE)gcc-8.3.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值