gcc/g++升级、Cmake升级

0 前言

今天将WSL中自带的gcc/g++升级了,以适应的C++的新特性。

先通过lsb_release -a命令查看一下对应的系统,我的是Ubuntu 20.04.6 LTS,focal

我之前在安装系统的时候,系统自带了一个gcc,可能是我用sudo apt install build-essential这个命令的时候自动给我下载的,自带的版本是gcc-9 最多支持C++14,所以我今天对这个进行了升级。

本应该是最简单的方法

sudo apt install gcc-13 g++-13 我写这篇博客的时候已经出到13了GNU官网

但是apt并没有添加这个最新的源,所以上面命令是执行不了的,我们需要采用下面的方法。

1 添加PPA源

我看网络上有些教程是直接输入命令sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test就成功添加了PPA的源,后面你可以参考这个文章下载

但是我添加的时候出现了Error: retrieving gpg key timed out.的错误,反正不知道什么原因,可能网络连接有问题了或者操作系统版本问题。

ps:我第一次写这个博客的时候系统是focal(Ubunutu20.04),当时自动添加源失败了,现在用(22.04)自动添加就成功了。

然后我只能手动添加这个源了,过程如下。

1.1 进入官网查找你所需的软件工具

官网地址PPA Lauchpad

在搜索中查找你需要的工具,比如我这里找ubuntu-toolchain-r,会出现一堆搜索结果,自己想办法找一下对应的。

1

这里有个过滤器(filter),注意我之前用lsb_release -a查看过我的系统是focal版本的,所以这里就选了focal,发现正好有13版本的,说明找对了。

2

1.2 手动添加源

3

这里同样选择对应版本,focal版本对应Ubuntu的20.04, 复制图中对应的如下代码,写入到sources.list文件中。

deb https://ppa.launchpadcontent.net/ubuntu-toolchain-r/test/ubuntu focal main 
deb-src https://ppa.launchpadcontent.net/ubuntu-toolchain-r/test/ubuntu focal main 

sources.list文件在/etc/apt/路径下,这个文件管理软件源,会换源的朋友自然知道这个文件在哪。

添加好了,保存退出,效果如下图所示。

4

1.3 添加证书

在终端中输入sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys (KEY_ID),其中KEY_ID替换成网站上的Fingerprint

1.4 证书更新

sudo apt-get update && sudo apt-get upgrade

1.5 下载对应的软件

sudo apt install gcc-13 g++-13这个命令可以正常使用了。

1.6 下载完成之后

其实你此时输入g++ -v/ --version或者gcc -v/ gcc --version,你会发现还是找不到命令,但是你输入gcc-13 g++-13的命令都可以用。

其实你已经下载好了,你可以在/usr/bin/目录下看到对应的gcc-13, g++-13,此时你需要做一步软链接,将其和gcc,g++绑定起来。

1.7 软链接

在终端中输入下面命令:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 100

此时将gcc-13软链接到gcc命令上,并设为最高优先级(100)的。

此时终端输入gcc g++啥的都正常了。

补充 update-alternatives

我这里用update-alternatives这个工具来管理,因为有些时候,可能你的系统里有多个版本的工具

某些情况下,比如不同项目要求,所以开发者的电脑中可能有多个版本的编译器,这时候我们需要对这些进行管理

所以借助update-alternatives这个工具,我们可以实现对多个工具的版本管理。

语法如下

update-alternatives --install <link> <name> <path> <priority>

link是一个软连接,name是一个别名,path是工具的完整路径,priority是优先级,数字越大优先级越高。

例如,系统中已安装了python 2.7,现在又安装了python 3.6,可以用以下命令注册:

update-alternatives --install /usr/bin/python python /usr/bin/python2.7  1

update-alternatives --install /usr/bin/python python /usr/bin/python3.6  2

此时当我们在终端输入python的时候,优先使用的是python3.6版本。当我想用别的版本时,可以用update-alternatives --config python查看所有版本,然后切换(你自己试试看)。


2 Cmake升级最新版本

  1. github上确定一下最新的版本是多少,我这里看到最新的版本是3.28.0
    5

  2. 开始下载

# 下载对应版本
wget https://github.com/Kitware/CMake/releases/download/v3.28.0-rc6/cmake-3.28.0-rc6-linux-x86_64.tar.gz
# 解压
tar -zxvf cmake-3.28.0-rc6-linux-x86_64.tar.gz
  1. 我下载的版本并不是二进制源码版本,而是二进制release版本,所以不需要像这个教程一样还需要编译源码。

我原来直接将压缩包解压到用户根目录(~)下,我把它移动到/usr/src/

添加到系统环境变量里

sudo sh -c 'echo export PATH="/usr/src/cmake/bin:$PATH" >> /etc/profile'

# 重启客户端
exit 

# 测试
cmake --version
posted @ 2023-10-24 01:31  wenli7363  阅读(692)  评论(1编辑  收藏  举报