update-alternatives 软件版本切换

update-alternatives版本切换

blog.csdn.net/muren/article/details/130069972

$ update-alternatives --help
用法:update-alternatives [<选项> ...] <命令>

命令:
  --install <链接> <名称> <路径> <优先级>
    [--slave <链接> <名称> <路径>] ...
                           在系统中加入一组候选项。
  --remove <名称> <路径>   从 <名称> 替换组中去除 <路径> 项。
  --display <名称>         显示关于 <名称> 替换组的信息。
  --list <名称>            列出 <名称> 替换组中所有

安装 的用法

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc12/bin/gcc 20 --slave /usr/bin/g++ g++ /usr/local/gcc12/bin/g++

卸载的用法

$ sudo update-alternatives --remove  gcc /usr/local/gcc12/bin/gcc 
$ sudo update-alternatives --remove  g++ /usr/local/gcc12/bin/g++

Deepin编译安装GCC12

 

本文记录了在Deepin20.8下通过编译安装GCC12.2.0的过程。

一、环境


deepin20.8

二、下载gcc12源码包并解压

cd ~
wget https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.xz
tar -Jxf gcc-12.2.0.tar.xz
cd gcc-12.2.0

三、安装依赖包


1、查看下载依赖包

cat contrib/download_prerequisites
.......
#------------------------------------
gmp='gmp-6.2.1.tar.bz2'
mpfr='mpfr-4.1.0.tar.bz2'
mpc='mpc-1.2.1.tar.gz'
isl='isl-0.24.tar.bz2'
#------------------------------------
......

2、下载依赖包到gcc源目录下

cd ~/gcc-12*
wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.2.1.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.2.1.tar.gz
wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.24.tar.bz2

3、检测依赖包

./contrib/download_prerequisites

四、准备构建目录


cd ~/gcc-12*
mkdir build
cd build

五、配置安装目录

../configure --prefix=/usr/local/gcc12/ --disable-multilib


configure命令说明

--prefix 指定安装目录

--disable-multilib 只安装64位版本

 

六、编译

make -j8

注意:整个编译时间花费1个小时

七、安装


安装到之前--prefix指定的目录

make install

八、环境配置


1、设置环境变量

echo 'export LD_LIBRARY_PATH=/usr/local/gcc12/lib64:$LD_LIBRARY_PATH' >> /etc/profile

重启生效

2、配置替换版本

sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc12/bin/gcc 20 --slave /usr/bin/g++ g++ /usr/local/gcc12/bin/g++

ykyi.net/?p=1712

如何知道gcc/g++ 的默认C++版本

如果你的gcc/g++版本号大于4.7的话,可以用如下命令获得默认c++版本

kamus@shyyp.net:~g++ --version | head -1
g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
kamus@shyyp.net:~ g++ -dM -E -x c++  /dev/null | grep -F __cplusplus
#define __cplusplus 201402L
kamus@shyyp.net:~$ gcc -dM -E -x c++  /dev/null | grep -F __cplusplus    #其实用gcc也可以
#define __cplusplus 201402L
kamuszhou@centos ~ g++ --version | head -1
g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
kamuszhou@centos~ g++ -dM -E -x c++  /dev/null | grep -F __cplusplus
#define __cplusplus 199711L

GCC 对应的版本和发布时间

C++版本 GCC版本支持情况 GCC版本 指定版本的命令标志
C++98 完全支持 从GCC6.1之前版本的默认模式 -std=c++98 or std=gnn++98
C++11 完全支持 从GCC4.8.1版本完全支持 -std=c++11 or std=gnu++11
C++14 完全支持 从GCC6.1版本开始完全支持,从6.1-10(包括)的默认模式 -std=c++14 or std=gnu++14
C++17 完全支持 从GCC 5版本开始支持,到GCC 7版本已完全支持,是GCC 11到13版本的默认模式 -std=c++17 or std=gnu++17
C++20 未完全支持 从GCC 8版本开始支持 -std=c++20 or

std=gnu++20(GCC 9以及之前版本使用-std=c++2a)

C++23 未完全支持(标准开发中) 从GCC 11版本开始支持 -std=c++2b or

std=gnu++2b

CMake指定C++版本

 

修改 Makefile

手动修改在 Makefile 中,指定编译 C++ 版本为增加编译开关 -std=c++11。如下例:

CFLAGS += -std=c++11

使用 CMake 指定


使用 CMake 指定 C++ 版本有两种方法。

修改 CMakeLists.txt


在 CmakeLists.txt 中增加对 C++ 版本的定义。方法如下:

# Enable C++11
set(CMAKE_CXX_STANDARD 11)
生成 Makefile 的时候指定

使用 cmake 的命令行时候指定。

方法如下:

cmake -DCMAKE_CXX_STANDARD=11 ..
个人推荐使用方法一,即修改 CMakeLists.txt 文件。