gcc的安装与多版本gcc切换

【小tips】当机器里面有多个版本的gcc时,该如何切换当前的gcc版本? 有时候因为项目需求,可能不同的项目需要不同的gcc版本,所以机器上会安装多个版本的gcc,那我们如何切换到想要使用的版本?并且/usr/bin/gcc在全局变量PATH中。而我的项目需要gcc-8及以上版本,该如何切换?我当前的版本是gcc-4.8.3。指向 gcc安装目录下的。 阅读详情

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

因为需要配置环境测试实验,需要更换gcc测试哪个版本合适。所以有了此文。欢迎交流。
#序:GCC依赖于gmp 4.2+, mpfr 2.4+和mpc 0.8+,并且安装顺序不可以改变。这里直接下载安装最新的版本。总的说就是每一步都是

configure(区别最大)
make
sudo make install

这篇文章跟我思路很类似,出现错误可以参考
https://blog.youkuaiyun.com/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 © 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.youkuaiyun.com/u014608280/article/details/80569328

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

有问题欢迎提问~

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

GCC命令与参数详解 使用 GCC 需要对编译的四个阶段(编译过程),以及编译的规则有一定的了解,熟悉使用 GCC 对于编写 Makefile 具有决定性的作用。GCC 的命令使用非常灵活,命令都以 gcc 开头然后配合待编译文件名,编译选项即可(可以说 GCC 就只有一条命令,只是编译选项较多而已)。命令选项可以随意组合,只需要注意选项是否包含参数即可,如果选项包含参数则参数需要紧紧跟随在选项后方。 阅读详情

相关推荐

WSL2 Ubuntu多版本GCC安装与切换指南

本文详细指导在WSL2 Ubuntu环境中安装与管理多版本GCC编译器。涵盖从源码编译GCC 7.1以兼容老项目,到通过官方仓库便捷安装GCC 10/11/12等新版本。核心内容是利用update-alternatives工具优雅切换不同GCC版本,并提供了针对不同Ubuntu版本的安装策略与常见问题解决方案,帮助开发者灵活应对各类C/C++项目的编译需求。

weixin_29252171的博客 406

简单实现gcc/g++更换版本

简单实现gcc/g++更换版本

m0_73860872的博客 6159

Ubuntu下多版本GCC安装与切换指南

本文详细介绍了在Ubuntu系统中安装和管理多个GCC版本的方法。通过APT包管理器安装不同版本,并利用update-alternatives工具灵活切换,有效解决了新旧项目编译环境兼容性问题。文章还涵盖了从源码编译特定版本以及按项目动态配置环境的实战技巧,为C/C++开发者提供了完整的多版本GCC管理指南。

weixin_29218509的博客 378

安装多个版本gcc并实现快捷切换

在实际生成过程中可能需要不同gcc版本来完成编译工作。可以在环境中配置好不同版本的gcc,方便快捷的实现版本的切换

weixin_43912994的博客 5635

【Ubuntu】多版本GCC共存与切换指南:从安装到配置

本文详细介绍了在Ubuntu系统中实现多版本GCC编译器(如GCC 11)共存与灵活切换的完整方案。通过添加PPA源安装多个版本,并重点讲解使用update-alternatives工具进行系统级版本管理,同时提供了项目级环境变量、Makefile配置等实用技巧,帮助开发者轻松应对不同C/C++项目的编译环境需求,确保开发环境的稳定与高效。

weixin_29230865的博客 371

【Ubuntu】多版本GCC共存与切换:从安装到配置的完整指南

本文提供了在Ubuntu系统上实现多版本GCC编译器(如GCC 9、11等)共存与灵活切换的完整指南。详细介绍了使用update-alternatives工具进行系统级管理,以及通过环境变量、别名等方式进行项目级配置的最佳实践,帮助开发者高效管理不同C/C++项目的编译环境,解决版本依赖冲突问题。

weixin_29304985的博客 337

【Linux】Ubuntu系统下安装与切换多版本gcc/g++

本文记录了在Linux系统上安装多版本gcc/g++的过程。GNU编译器(GCC, GNU Compiler Collection)是GNU工具链的关键组件,与GNU、Linux相关项目的标准编译器。它设计之初仅用来处理C语言的(也被称为GNU C编译器),紧接着扩展到C++、Objective-C/C++、Fortran、Java、Go等编程语言。查看是否已安装GNU。 如果你的系统没有安装GNU编译器,那么需要执行如下命令安装基础开发工具包,该命令安装了gcc、g++、make等一系列基础工具包👇 .

TangPlusHPC的博客 6657

Linux中的多个GCC版本:选择合适的GCC版本进行编程

在Linux系统中,GCC(GNU Compiler Collection)是一个广泛使用的编译器套件,用于编译和构建各种编程语言的代码。本文将介绍如何在Linux上使用多个GCC版本,并展示如何选择适合自己需求的版本进行编程。通过以上步骤,您可以在Linux系统上安装和使用多个GCC版本。根据项目需求和特定优化要求,选择合适的GCC版本进行编程,以获得更好的性能和兼容性。执行上述命令后,系统会列出已安装的GCC版本及其优先级,提示用户选择要使用的版本。命令查看系统中可用的GCC版本,并选择要使用的版本。

ByteGlide的博客 2901

Ubuntu多版本(低版本)gcc/g++安装、切换与卸载图文教程

如何在Ubuntu安装多个版本的gcc/g++以满足项目需要?

FRIGIDWINTER的博客 5571

在Ubuntu上玩转多版本GCC/G++:从安装到无缝切换的终极指南

创建独立环境变量# CMake指定编译器多版本GCC/G++的安装与注册update-alternatives核心管理机制项目级编译器切换方案高级问题排查技巧编译器性能对比方法终极建议保持至少3个编译器版本(旧版/稳定版/前沿版)关键项目锁定特定编译器版本定期测试新版本编译器兼容性使用Docker容器隔离实验环境工具的价值在于灵活运用。当你能在30秒内为任何项目搭建精准的编译环境时,你就拥有了超越大多数开发者的核心竞争力!附录:常用命令速查。

QQ_778132974的博客 458

MATLAB联合Fluent优化仿真

matlab与fluent交互

keleke_的博客 4721

多版本GCC安装及切换

最近在研究C++20中的协程需要安装GCC版本10。用到GCC多版本切换,记录步骤。

flysnow010的博客 1405

告别蓝牙音质妥协:用ESP32和PCM5102搭建WiFi无损音频播放器(附完整代码)

本文详细介绍了如何利用ESP32微控制器和PCM5102 DAC芯片构建一套完整的WiFi无损音频流媒体系统,彻底摆脱蓝牙协议的音质束缚。从硬件原理到软件实现,包括核心器件选型、电路设计、I2S音频驱动实现以及系统优化方案,帮助音频发烧友实现高保真无线音频传输。

weixin_30733003的博客 541

安装新版本GCC并在多版本间切换

安装新版本GCC并在多版本间切换 声明: 本博文转载并翻译于博客:Installing newer GCC versions in Ubuntu 我们经常需要在系统多安装多版本的GCC,以满足C/C++不同版本的特性. 新GCC稳定安装包主要从Ubuntu Toolchain PPA获取. 步骤: 1.安装添加并更新APT库 $ sudo add-apt-repository ppa:ubuntu...

virgilshi的博客 1797

基于FPGA的DDS信号发生器

之前的博客讲到了DDS的基本原理,现在用Verilog代码实现DDS,能够产生四种波形,方波,三角波,正弦波,锯齿波,用按键来控制频率和选择波形。其中按键消抖模块来自小梅哥的FPGA自学笔记设计与验证这本书。 module DDS_Module( Clk, Rst_n, EN, Fword, Key1, Pword, DA_Clk, DA_Data ); input Clk...

qq_43534451的博客 9946

VXLAN技术详解

VXLAN(虚拟可扩展局域网)是一种Overlay二层虚拟化技术,通过MAC-in-UDP封装在IP网络上构建大规模虚拟二层网络。核心组件包括VTEP(隧道端点)、24位VNI(支持1600万个虚拟网络)和VXLAN网关。相比VLAN,VXLAN具有超大规模扩展、跨三层互联、支持虚拟机无缝迁移等优势,适用于云数据中心多租户隔离、跨数据中心互联等场景。其基于IP路由的封装方式无需改造物理网络,为现代云网络提供了弹性、安全的虚拟化解决方案。

kjkdd的博客 594

Gcc多版本安装和切换

尽管这不是一个致命错误,但表明现有的替代项配置可能有问题。安装 gcc13 和 g++13(ubuntu22.04)安装 gcc9 和 g++9(ubuntu18.04)的链接组(link group)当前处于损坏状态,输入需要作为默认编辑器的gcc版本的编号 1-3。注:最后那个数字代表优先级,默认选优先级高的,如果问题依然存在,请确保你的系统没有其他。通过这些步骤,你应该能够修复损坏的。正在强制重新安装你指定的。添加本地source。

我的博客 2706

揭秘cocos-mcp:如何用AI助手提升CocosCreator游戏开发效率

本文深入介绍了cocos-mcp工具,它作为连接AI助手与CocosCreator编辑器的桥梁,遵循MCP协议,能显著提升游戏开发效率。通过自然语言指令,开发者可让AI直接查询场景结构、批量修改属性或生成上下文代码,将重复操作变为智能调度,实现从“手动操作者”到“指令指挥官”的工作流变革。

weixin_29001683的博客 1048

【转】GCC G++ 多版本安装和切换

GCC G++ 多版本安装和切换 原网址:https://blog.youkuaiyun.com/zhangxin4832/article/details/79225394/ jennifer@Jennifer:~$ gcc --version gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 Copyright © 2015 Free Software F...

Rosalindchan的博客 1825

STM32串口编程基础知识讲解

本篇文章给大家介绍一下串口的基础编程知识,这些知识是属于串口的理论知识,在开始学习编写代码的时候必须要掌握这些基本的知识点。本篇文章讲解了串口的基本概念知识,大家在学习编写代码时将其掌握才能更好的理解代码。

m0_49476241的博客 1207

secureCRT 破解方法

3、输入注册信息打开keygen.exe,点击path,选择SecureCRT的安装目录(例如D:\VanDykeSoftware\Clients)的securecrt.exe打开,继续下一步打开LicenseHelper.exe,如下。1、注册SecureCRT9.1打开keygen.exe,出现以下问题(没有关掉安全防护,一双击打开,Windows会自动识别keygen.exe为bingdu并删除)打开桌面SecureCRT,此界面不输入内容,直接点击下一步。2、存储配置文件夹(可以默认安装)

逆水行舟 1万+

Ubuntu 20.04 上安装 gcc/g++7.5 多版本gcc切换

update-alternatives: 使用 /usr/bin/gcc-7 来在手动模式中提供 /usr/bin/gcc (gcc)你将会被展示一系列已经安装在你的 Ubuntu 系统上的 GCC 版本。输入你想设置为默认的 GCC 版本,并且按回车Enter。默认的版本是拥有最高优先级的那个,在我们的场景中是gcc-7。1 /usr/bin/gcc-7 70 手动模式。有 2 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。

子燕若水的博客 1411

第47节:cesium 热力图效果(含源码+视频)

cesium 热力图效果

qq_29384639的博客 1675

cuda安装、gcc多版本兼容安装切换

安装cuda开发库之后,使用gcc编译会可能会报错要求gcc版本,如下表 CUDA versionmax supported GCC version 11.1, 11.2, 11.310 119 10.1, 10.28 9.2, 10.07 9.0, 9.16 85.3 74.9 5.5, 64.8 4.2, 54.6 4.14.5 4.04.4 目前系统为ubuntu21.04,gcc 10.3,安装cuda 11.3后编译cuda sa

热爱生活,忠于自己 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【Linux指令】GCC、CUDA、Python的版本不兼容情况下,新版本安装以及多版本切换

在学习OpenPCDet库时,由于安装过程出现了许多环境问题,比如gcc\cuda等版本不合适,在这里踩了很多坑,因此主要将gcc、cuda、Python的版本切换总结一下,以便后续的读者使用。

AaaA00000001的博客 3610

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

GCC G++ 多版本安装和切换

2018.02.26jennifer@Jennifer:~$ gcc --versiongcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609Copyright (C) 2015 Free Software Foundation, Inc.This is free software; see the source for copying conditi...

张欣的专栏 9885

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: Ubuntu16下安装matlab2018a
下一篇: RCNN发展史
hancoder
博客等级 码龄9年 4135粉丝 167原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值