不同版本的GNU编译器共存

不同版本的GNU编译器共存

​ 前言:

​ 首先通过 apt install xxx 安装的软件都有一个网站(源)作为下载的索引网站。如果你这个系统默认配置的源中没有你想要的软件或者依赖包的话,那么就不能通过apt install 来安装。

​ linux系统中的网站(源)通过 /etc/opt/sources.list 文件来配置 。由于Ubuntu22.04代号jammy 系统中默认配置的g++版本为11。而其他版本也只存在9,10的源。所以只有对这个配置文件进行修改才能下载其他版本的g++。故有一下操作。

  • 1.添加老版本ubuntu的镜像源

    命令行输入

    sudo gedit /etc/apt/sources.list 
    

    ​ /etc属于系统文件的范畴,所以需要sudo给这一条命令赋予管理员的权限。也可以使用sudo -i 给整个终端赋予管理员权限。

  • 2.在sources.list中添加下面两个网站(源)

    deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
    # under is append 
    deb https://mirrors.aliyun.com/ubuntu/ focal main universe
    deb https://mirrors.aliyun.com/ubuntu/ xenial main universe
    deb https://mirrors.aliyun.com/ubuntu/ bionic main universe
    

    ​ 其中

    • jammy:ubuntu 22.04
    • focal:ubuntu 20.04
    • bionic:ubuntu 20.04
    • xenial:ubuntu 18.04

    保存退出。

  • 3.将网站(源)中的更新拉取到本地,作为cache保存

    sudo apt update  
    

    ​ 此命令是将远程更新拉取本地作为缓存

    在此你会发现有如下报错,因为你没有GPG签名,在安装不是原有系统源中的软件时,可能需要此操作。

    W: GPG error: http://mirrors.aliyun.com/ubuntu xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
    E: The repository 'http://mirrors.aliyun.com/ubuntu xenial InRelease' is not signed.
    N: Updating from such a repository can't be done securely, and is therefore disabled by default.
    N: See apt-secure(8) manpage for repository creation and user configuration details.
    

    此时只需要关注NO_PUBKEY是啥数字。执行 最后一个参数与你看到的数字对应。

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
    

    通过一下命令可以查看是否有你目前的cache中,是否有你想要g++版本

    apt-cache search  g++| grep g++-*
    

    ​ *:为通配符

    ​ grep:为在指定的范围内的查找命令

  • 4.下载你所需版本的g++,例如 sudo apt-get install g+±版本号

     sudo apt-get install g++-10
    

    ​ 下载完成后,只是将此版本下载到本地,还没配置作为系统环境的g++编译器。

    5.查看本地的已有的g++,以及更换指定版本的g++编译器

    dpkg -l | grep g++ #查询本地已有的c++版本
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 100 #更换系统的c++版本
    

    6.不同版本g++的位置和其命名

    #位置
    /usr/bin/
    #命名
    /usr/bin/g++-版本号
    

    附:在安装过程中,apt和apt-get的区别

apt apt-get
apt 在某些情况下会显示更易读的信息,并且有更好的进度条显示。 apt-get 的输出通常更为简洁,不如 apt 那么直观。
apt 会自动对被依赖关系影响的软件包进行处理。 apt-get 需要使用单独的命令来处理这些软件包。
apt 会自动确认操作。 apt-get 需要用户手动输入 “yes” 确认。
apt 在安装或卸载软件包后会自动清理不再需要的依赖关系。 apt-get 不会自动进行清理,apt-get autoremove 命令来进行清理。

​ 参考网站:https://www.yii666.com/blog/357598.html

你可能感兴趣的:(Linux,linux,gnu,bug,opencv,slam)