首页 > 系统相关 >Ubuntu 下判断 cmake 用的 gcc 还是 g++,如何切换版本

Ubuntu 下判断 cmake 用的 gcc 还是 g++,如何切换版本

时间:2023-05-06 11:12:14浏览次数:41  
标签:bin gcc cmake ++ sudo usr 版本

> 1 / 1
> 
> Ubuntu 下怎么知道 cmake 用的 gcc 还是 g++

1 / 1

在Ubuntu上,可以通过`cmake`命令行选项`-DCMAKE_CXX_COMPILER`来指定C++编译器,而默认情况下,`cmake`将使用系统的默认编译器。

要查看`cmake`使用的默认C++编译器,可以使用以下命令:

perl

```perl
cmake --system-information | grep CXX_COMPILER
```

这将输出类似于以下内容的行:

javascript

```javascript
CMAKE_CXX_COMPILER: /usr/bin/c++
```

其中`/usr/bin/c++`是`cmake`使用的默认C++编译器的路径。要查看这个编译器是GCC还是G++,可以运行以下命令:

bash

```bash
readlink -f $(which c++)
```

如果输出结果中包含`g++`,则表示默认的C++编译器是G++。如果输出结果中包含`gcc`,则表示默认的C++编译器是GCC。

> 1 / 1
> 
> 可以同时安装多个g++版本吗?

1 / 1

是的,可以在Ubuntu上同时安装多个g++版本。这可以通过安装不同版本的g++包来实现。

首先,您需要添加ppa源以获取支持不同版本的g++的软件包。打开终端并输入以下命令:

sql

```sql
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
```

然后,您可以使用以下命令来安装不同版本的g++:

`sudo apt install g++-X.Y`

其中`X.Y`是您要安装的g++版本号。例如,要安装g++ 8.4和g++ 9.4,您可以运行以下命令:

`sudo apt install g++-8 g++-9`

安装后,您可以使用以下命令来检查已安装的g++版本:

bash

```bash
ls /usr/bin/g++*
```

这将列出所有已安装的g++版本。您可以使用以下命令来切换默认g++版本:

sql

```sql
sudo update-alternatives --config g++
```

该命令将列出所有可用的g++版本,然后您可以选择要使用的默认版本。

请注意,使用不同版本的g++时可能需要更新您的CMake文件或Makefile以选择正确的g++版本。


# 设置gcc优先级,最后的数字代表优先程度,数值越大,优先程度越高,可自行调整各版本的优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90
# 设置g++优先级
sudo update-alternatives  --install /usr/bin/g++ g++ /usr/bin/g++-5 50
sudo update-alternatives  --install /usr/bin/g++ g++ /usr/bin/g++-7 70
sudo update-alternatives  --install /usr/bin/g++ g++ /usr/bin/g++-9 90
 
# 查看gcc各版本优先级,可以手动调整默认版本
sudo update-alternatives --config gcc
# 查看g++各版本优先级
sudo update-alternatives --config g++

检查默认gcc/g++版本,使用如下命令
gcc -v
g++ --version

 

标签:bin,gcc,cmake,++,sudo,usr,版本
From: https://www.cnblogs.com/nanfei/p/17376652.html

相关文章

  • [Luogu-P1007]题解(C++)
    PartIPreface原题目(Luogu)PartIISketch给定一个正整数\(L\),表示独木桥长度。给定一个正整数\(N\),表示桥上士兵的数量。给定\(N\)个整数,分别表示每个士兵的坐标。规定走到\(0\)坐标或\(L+1\)的位置为下桥,两个士兵相遇时不能走过去,他们会各自回头走。求出所有士......
  • 高速爬过C++(2级)
    恭喜你升到2级,打怪不容易,虽然别的地方打一个怪可以升到99级!当我们用铅笔在白纸上画画时,会发生什么?我们弄脏了白纸。为啥会弄脏,原来是摩擦将铅笔粉留在了白纸上。虽然我们可以只关心画出什么样的图案而不管那些什么复杂的物理现象但是有时力道、速度也会影响成画的效果。所以......
  • 高速爬过C++(0级)
    魔镜:你想要什么?我:什么都想要魔镜:你有什么?我:什么都没有魔镜:我有的,你已经拥有。 掠过一本C++教程目录,似懂非懂的概念名称撞击大脑,让我两眼冒金星。魔镜什么都没有,所以我也什么都没有,心里默念了好几遍。我从0级开始闯入这本C++教程,虽然很久很久以前玩过,多少级?不说不说,好汉不......
  • [AtCoder-AT_ABC108_B]题解(C++)
    PartIPreface原题目(Luogu)原题目(AtCoder)PartIISketchPartIIIAnalysis观察这道题,我们很容易想到,必须推导出\(x1,y1,x2,y2\)与\(x3,y3,x4,y4\)之间的关系。我们观察下图。可以发现:\(\begin{aligned}\begin{cases}x3=x2-(y2-y1)\\y3=y2+(x2-......
  • [CodeForces-143A]题解(C++)
    PartIPreface原题目(Luogu)原题目(CodeForces)PartIISketch设有一个\(2\times2\)的棋盘,上面可以填入\(1-9\)的数字。给出\(6\)个数字,为每行每列以及每个对角线上的数字之和,求相应的摆放方式,无解输出\(-1\)。PartIIIAnalysis观察此题数据规模,不难发现数据......
  • [CodeForces-1104A]题解(C++)
    PartIPreface原题目(Luogu)原题目(CodeForces)PartIISketch给定一个整数\(n\)。将\(n\)拆分成一个数列\(a_1,a_2,a_3,\dots,a_m\)。使得\(\sum\limits_{k=1}^{m}a_k=n\),每个\(a_i\in[0,9]\)且数列中不相同的数的数量尽量少。PartIIIAnalysis我们很容易......
  • c++打卡第十九天
    一、问题描述 二、设计思路。①、定义总鱼数为x条,这个x我们需要使用double类型定义,②、第一次剩余x1=x-(x/2+1/2);第二次剩余x2=x1-(x1/3+1/3)第三次剩余x3=x2-(x2/4+1/4)第四次剩余x4=x3-(x3/5+1/5)x4=11;③、我们可以使用循环实现此方程。即x-(x/j+1/j);③、使用数组存储每次卖鱼......
  • C++类模板(模板类)
    参考资料:C++类模板(模板类)详解(biancheng.net) 人们需要编写多个形式和功能都相似的函数,因此有了函数模板来减少重复劳动;人们也需要编写多个形式和功能都相似的类,于是 C++ 引人了类模板的概念,编译器从类模板可以自动生成多个类,避免了程序员的重复劳动。例如,在《C++运算符重......
  • C++11生成随机数
    一、random_device类classrandom_device{public:typedefunsignedintresult_type;//constructor构造函数explicitrandom_device(conststd::string&token="");//propertiesstaticresult_typemin();staticresult_typemax()......
  • C++中的多线程编程和同步机制
    C++中的多线程编程和同步机制使得程序员可以利用计算机的多核心来提高程序的运行效率和性能。本文将介绍多线程编程和同步机制的基本概念和使用方法。多线程编程基础在C++中,使用<thread>库来创建和管理线程。线程可以通过函数、成员函数或者Lambda表达式来实现。以下是一个使......