GNU编译器是C,C++,Objective-C,Fortran,Ada,Go和D编程语言的编译器和库的集合。许多开源项目,包括Linux内核和GNU工具,都是使用GCC编译的。

除了这些语言使用gcc/g++编译器,Python和Node.js的第三方库或者软件,都可能会使用gcc/g++编译器。

安装GCC

默认的Debian存储库包含一个名为build-essential的开发者工具集,其中包括GNU编译器集合,GNU调试器以及编译软件所需的其他开发库和工具。

如需要安装build-essential开发工具包,请以root用户或具有sudo权限的用户运行以下apt命令

sudo apt update
sudo apt install build-essential

该命令会安装很多软件开发者工具,包括gccg++make以及常用c/c++的头文件。

除了安装c/c++开发者工具之外,您还可能需要安装GNU/Linux开发手册,这些手册页描述了Linux编程接口的说明。

如果你是Linux开发者可能需要这些文档,运行以下apt命令安装Linux编程接口的说明:

sudo apt-get install manpages-dev

至此,你已经完成gcc/g++开发工具的安装。

我们需要验证gcc/g++开发工具是否正确的安装,并检查gcc/g++的版本是否符号你要编写c/c++标准库的要求。

你可运行以下的gcc/g++命令打印GCC版本,验证GCC编译器是否已成功安装:

gcc --version
g++ --version
gcc (Debian 9.3.0-Debian) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Debian 10存储库的GCC版本是9.3.0。至此gcc开发者工具和库已安装在您的Debian系统上。

Hello World

在本节中,我们将使用gcc编译简单的C程序。打开您的喜欢代码编辑器并创建以下hello.c文件,在本教程中,我们将使用vscode编辑器创建hello.c文件。

使用快捷键ctrl+alt+t打开终端,然后运行code命令打开vscode编辑器:

code

创建hello.c文件,并复制以下代码到文件中:

// hello.c
#include <stdio.h>
 
int main() {
    printf("Hello, world!\n");
    return 0;
}
hello.c

保存文件,并通过运行以下gcc命令将hello.c编译为可执行文件:

gcc hello.c -o hello

gcc命令将在当前目录中创建一个二进制文件hello。你可通过以下命令执行hello程序:

./hello
Hello World!

安装多个GCC版本

在本节中将说明如何在安装多个版本的gcc在Debian 10。这可以使你获得GCC编译器的新版本,新功能和优化。编写更高版本标准库的代码。

在撰写本文时,默认的Debian存储库包含从7.x.x10.x.x的多个GCC版本。在以下示例中,我们将安装最新的三个版本的gcc编译器和g++编译器。

以下apt命令将安装gcc/g++编译器的8/9/10的版本,你可选择全安装,也可以选择你是使用的编译器版本:

sudo apt install gcc-8 g++-8 gcc-9 g++-9 gcc-10 g++-10

现在已经安装多个版本的gcc/g++编译器的编译。我们需要一个简单快捷的方式切换gcc/g++版本。

update-alternatives可以帮助我们快速切换gcc/g++的版本。update-alternatives 可以帮我们维护gcc/g++默认命令的符号链接。使我们可以快速切换命令的版本。

由于gcc/g++安装的安装脚本并没有设置使用update-alternatives设置默认的版本, 因此我们需要手动将gcc添加到update-alternatives,并由update-alternatives维护默认版本。

以下三个update-alternatives命令将安装gcc编译器8/9/10版本,这时gcc的符号链接由update-alternatives来维护。

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100

这里解释一下命令的含义,--install是update-alternatives的子命令,/usr/bin/gcc是符号链接/软链接文件,/usr/bin/gcc-9gcc的绝对路径,100是优先级。

你也可以使用同样的方式配置g++编译器命令的快速切换。由update-alternatives维护g++命令的符号链接/软链接

设置update-alternatives完成以后,如果要更改默认版本,请使用update-alternatives命令:

sudo update-alternatives --config gcc
There are 3 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path            Priority   Status
------------------------------------------------------------
* 0            /usr/bin/gcc-10   100       auto mode
  1            /usr/bin/gcc-10   100       manual mode
  2            /usr/bin/gcc-8    80        manual mode
  3            /usr/bin/gcc-9    90        manual mode

Press <enter> to keep the current choice[*], or type selection number:

系统会为您提供Debian系统上所有已安装GCC版本的列表。输入您要用作默认版本的版本号,然后按Enter

该命令将修改/usr/bin/gcc符号链接,并将链接指向你选择的gcc版本。g++的配置方式与gcc一样。

结论

我们向您展示了如何安装gcc/g++在Debian 10上。您现在可以访问官方GCC文档页面,并学习如何使用GCC和G ++来编译C和C++程序。如果您遇到问题或有反馈,请在下面发表评论。