关于g++版本升级、devtool的使用、三个重要文件概述、bash概述的记录

本文讲述了作者在编译C++代码时遇到的报错,通过升级devtoolset工具并配置g++版本8解决,重点介绍了devtoolset的使用方法和Linux环境变量设置,特别是.bash_profile和bashrc的作用。

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

#include<iostream>
#include<string>
using namespace std;
int main(){
    string s("hello, world!!!");
    decltype(s.size()) punct_cnt=0;
    for(auto c : s){
        if (ispunct(c)) 
        {
            ++punct_cnt;
        }
    }
    cout<<punct_cnt<<endl;
    return 0;
}

在这里插入图片描述

今天在编译这段代码时遇到了这样的报错,让我百思不得其解,代码绝对是没得问题,检查了5遍不止,没办法只能上网搜,搜也没搜到个结果,最好感觉会不会是版本不支持的原因呢,就使用devtool对gcc/g++进行升级,升级到了版本8,然后一编译,顺利通过,没有任何报错,所以大概率就是版本的问题,在上面这段代码里面用到了一个C++11新版本提供的范围for语句。
所以在这里我就围绕这个问题进行一些总结记录:
先说一下升级使用到的devtool工具,这是一个centos软件集合存储库,存在的目的是为了弥补yum安装不了更高级版本的问题,就比如g++,在yum上的版本是4.8.5,但是有些代码需要更高级的版本,就需要此软件集
在这里插入图片描述
在安装时只需要使用yum进行安装

sudo yun -y install centos-release-scl

安装完成后如果需要列出所有的版本就可以使用下面这个命令:

yum list all --enablerepo='centos-sclo-rh'|grep gcc

在这里插入图片描述
这时找到自己想要更新的版本,比如我更新g++
在这里插入图片描述
因为我已经安装好了,就显示nothing to do
等安装好之后,就需要设置启用这个下载的版本
目前我知道的有两个方式,其中的原理都差不多:
一种是将source命令写入到.bash_profile里面,以后每一次重启都会执行一遍,应该算是永久生效,一种是临时生效,先说永久生效:

echo ‘source /opt/rh/devtoolset-8/enable’ >> ~/.bash_profile
source /opt/rh/devtoolset-8/enable

把一条source命令写进~/.bash_profile里面,每一次切换到当前用户都会生效,也就是都换自动的启用8这个版本,第二条就是执行切换到版本8环境的命令。
下面说临时生效:

scl enable devtoolset-8 bash

这条命令应该是给bash切换一个环境,以后使用g++和gcc就会是版本8,说到这就不得不提一下bash是个什么东西了,Bash 就是一种跑电脑里的程序(program),但它的设计使你能轻松地与之“对话”(talk)。在电脑里面每个程序有每个程序所作的事,就比如时间了、读取文档了、启动其他程序、线程管理等。bash这个程序与它们最大的不同在于它并不执行任何特定的任务,而是听取用户的命令,所以我们为了与其对话也特地创造出来一种叫做bash shell的语言,什么是shell呢?shell这类程序本质上就是提供一个与其他程序交互的界面。bash是一种shell程序,它就是被设计出来听从我们的命令,做我们让它做的事。最后提一嘴bash这个的读法是 ba-shell。而且就把这条命令如果也echo进bash.profile应该也可以永久生效,不过我没试过。
下面说几个文件吧:
在Linux中比较常见的几个文件是profile、bashrc和bash_profile

profile

路径:/etc/profile
作用:用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户生效。
方式:当用户登录(login)时,文件会被执行,并从/etc/profile.d目录的配置文件中查找shell设置。
在profile中设置环境变量
一般是不建议在/etc/profile文件中添加环境变量的,因为在这个文件中添加的设置会对所有用户起作用,对于一些特殊的设置反而会引发一些不必要的麻烦。

bashrc

bashrc 文件主要用于配置函数或别名,一些个性化的配置也在bashrc里面可以设置,我之前有篇文章写到设置bash界面颜色和格式就是在此文件里设置的。bashrc 文件只会对指定的 shell 类型起作用,bashrc 只会被 bash shell 调用。bashrc 文件有两种级别:系统级和用户级
系统级:系统级位于/etc/bashrc,对所有用户生效
用户级:用户级位于~/.bashrc,仅对当前用户生效
在这里插入图片描述

bash_profile

bash_profile只对单一用户有效
文件位于:~/.bash_profile,该文件是一个用户级的设置,就是某一个用户的 profile 目录下。
这个文件也可以用于配置环境变量和启动程序,但只针对单个用户有效。和profile 文件类似,bash_profile 也会在用户登录(login)时生效,也可以用于设置环境变量,与 profile 不同的是bash_profile 只会对当前用户生效。
/etc/profile,/etc/bashrc 是系统全局环境变量设定;
~/.profile, ~/.bashrc 是用户家目录下的私有环境变量设定。
在这里插入图片描述
1.首先在/etc/profile中读入全局环境变量设定,然后根据其内容读取额外设定的文档,/etc/profile.d和/etc/inputrc;
2.再根据不同用户,在其家目录内读取~/.bash_profile;
3.如果上一步读取失败则会读取~/.bash_login;
4.若再次失败则读取~/.profile(这三个读取的文档设定上基本无差别,但是仅读取上有优先级)
5.最后根据用户帐号读取~/.bashrc。
~ /.profile 与 ~ /.bashrc都有个性定制的功能,但~ /.profile可以设定本用户专有的路径、环境变量等,它只能登入的时候执行一次,但是~ /.bashrc可以选择系统级还是用户级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤夜寒光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值