update-alternatives 软件版本切换
- 未分类-NO
- 2024-05-19
- 102热度
- 0评论
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 文件。
