gcc的安装与多版本gcc切换

注:

本文仅适用于安装gcc-6.3 g++-6.3之类的,因为apt-get不支持安装gcc-5以上多版本。如需安装版本5之下的,请直接使用apt-get 安装。参考别人链接:https://blog.csdn.net/zhangxin4832/article/details/79225394/ 。对这个链接里内容不解也可留言~

因为需要配置环境测试实验,需要更换gcc测试哪个版本合适。所以有了此文。欢迎交流。

序:GCC依赖于gmp 4.2+, mpfr 2.4+和mpc 0.8+,并且安装顺序不可以改变。这里直接下载安装最新的版本。总的说就是每一步都是

configure(区别最大)
make
sudo make install

这篇文章跟我思路很类似,出现错误可以参考
https://blog.csdn.net/anneqiqi/article/details/51725658
各版本gcc下载:http://ftp.gnu.org/gnu/gcc/

前期工作:因为反正最后都要添加环境变量,那么我们就第一步完成吧,以免后面报错。

打开profile:sudo gedit /etc/profile
在文本末尾添加:(export后面没有回车)

#gcc
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib:/usr/local/gcc/lib

1、安装gmp 6.1.2

wget后面对应的是下载地址,其他版本的阶段到gmp处即可以

wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
tar xvf gmp-6.1.2.tar.xz
cd gmp-6.1.2
./configure --prefix=/usr/local/gmp
make -j20 && make install
./configure --prefix=/usr/local/gmp

其中:configure --prefix=是指的安装目录,后文还有--with指的是依赖文件的目录。prefix和with前面都是两个-
configure 、make、make install是linux中安装文件常见的三步骤

sudo make
sudo make install

make check

执行./configure –prefix=/usr/local/gmp 可能会出现如下错误

checking whether sscanf needs writable input… no
checking for struct pst_processor.psp_iticksperclktick… no
checking for suitable m4… configure: error: No usable m4 in $PATH or /usr/5bin (see config.log for reasons).

那就安装m4

yum install m4

安装成功后再次执行configure命令成功会显示如下界面

config.status: linking mpn/x86_64/coreihwl/gmp-mparam.h to gmp-mparam.h
config.status: executing libtool commands
configure: summary of build options:

Version: GNU MP 6.1.2
Host type: haswell-pc-linux-gnu
ABI: 64
Install prefix: /usr/local/gmp
Compiler: gcc -std=gnu99
Static libraries: yes
Shared libraries: yes

2:安装mpfr 3.1.5 mpfr依赖于gmp

wget http://www.mpfr.org/mpfr-current/mpfr-3.1.5.tar.gz
tar xvf mpfr-3.1.5.tar.gz
cd mpfr-3.1.5
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
make -j20 && make install
./configure

make

sudo make install

3:安装mpc 1.1.0 mpc依赖于gmp和mpfr

wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
tar xvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr

make  
sudo make install
image.png
make

image.png
sudo make install

image.png

4:安装GCC 6.3.0

wget ftp://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.gz
tar xvf gcc-6.3.0.tar.gz
cd gcc-6.3.0
sudo ./configure --prefix=/usr/local/gcc-6.3 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc
#这步make时间比较长,很长~
make 
make install

#软链接一下,其实这里软链接完全都是为了支持多版本gcc
sudo ln -s /usr/local/gcc-6.3  /usr/local/gcc
sudo ln -s /usr/local/gcc/bin/  /usr/bin/
sudo ln -s /usr/local/gcc/bin/g++  /usr/bin/
image.png

5:gcc版本切换

安装其他版本只需要重新进行第4步就可以,因为我觉得反正用的时候只用一种gcc,那么gcc依赖完全可以共用一份,如果依赖版本有异那么从1开始装就可以。注意目录就可以

安装过程中可能会出现:

“checking for suffix of object files… configure: error: cannot compute suffix of object files: cannot compile
See `config.log’ for more details.
make[2]: * [configure-stage1-target-libgcc] Error 1
make[2]: Leaving directory `/tmp/gcc-6.3.0’
make[1]: * [stage1-bubble] Error 2
make[1]: Leaving directory `/tmp/gcc-6.3.0’
make: * [bootstrap] Error 2

解决方法:
sudo apt-get install m4
sudo apt-get install gcc-c++

实际解决办法:编辑变量,把我们安装的gmp,mpfr,mpc加进去
vi /etc/ld.so .conf

添加部分:#这个是默认系统的变量
/usr/local/lib
/usr/local/gmp/lib
/usr/local/mpfr/lib
/usr/local/mpc/lib
添加保存后记得更新动态库的缓存:
sudo ldconfig -v

更新后再去重新编译安装。

备份系统默认的gcc版本
sudo mv /usr/bin/gcc /usr/bin/gcc-bak
sudo mv /usr/bin/g++ /usr/bin/g++-bak
sudo mv /usr/bin/c++ /usr/bin/c++-bak

创建新的gcc软连接
sudo ln -sf /usr/local/gcc/bin/gcc /usr/bin/gcc
sudo ln -sf /usr/local/gcc/bin/c++ /usr/bin/c++
sudo ln -sf /usr/local/gcc/bin/g++ /usr/bin/g++
sudo ln -sf /usr/local/gcc/lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6

查看gcc版本:

[root@localhost ~]# gcc --version
gcc (GCC) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR

[root@localhost ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc/libexec/gcc/x86_64-pc-linux-gnu/6.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure –prefix=/usr/local/gcc –enable-threads=posix –disable-checking –disable-multilib –enable-languages=c,c++ –with-gmp=/usr/local/gmp –with-mpfr=/usr/local/mpfr –with-mpc=/usr/local/mpc
Thread model: posix
gcc version 6.3.0 (GCC)


参考:https://blog.csdn.net/u014608280/article/details/80569328

后记:

可能因为我返回安装的原因,可以参考此文先卸载后安装老版本4.77,再重新安装新版本(gcc和g++同步装)
https://blog.csdn.net/ppp036/article/details/51126468

有问题欢迎提问~

sudo ln -sri /usr/local/gcc/bin/* /usr/local/bin

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容