什么是 GCC 工具链?

What is a GCC toolchain?

在哪些方面可以成为C/assembly/object/executable编译器的例子?

我想要比维基百科提供的信息更多的信息。 另外,如果你能 link 一些我可以找到更多相关信息的资源,那就太好了。

来自 Wiktionary,一个工具链是:

A set of tools for software development, often used in sequence so that the output of one tool comprises the input of the next.

GCC 是 GNU 编译器集合;即一组来自 GNU 的不同语言的编译器。来自 official webpage:

The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go, as well as libraries for these languages (libstdc++,...).

因此,GCC 工具链是一组应用程序和库,用于编译用多种语言编写的程序。例如,对于 C 和 C++ 语言,它包括如下工具:

  • cpp 预处理器
  • gcc C 编译器
  • g++ C++ 编译器
  • gcov 测试覆盖程序

以及附带的库,例如:

  • libbacktrace 符号回溯生产者
  • libquadmath 四精度数学库
  • libstdc++-v3 C++ 标准库

现在,当有人提到 GCC 工具链时,通常他们也隐含地提到可能不是来自 GCC project/repository 但通常是开发所需的其他实用程序。例如,像这样的工具:

  • ar 存档操作程序
  • as 汇编器
  • c++filt C++ 分解器
  • ld 链接器
  • nm 目标文件符号列表
  • objdump 对象文件信息转储器

如果您正在使用 GNU 中这些工具的实现,那么您正在使用 GNU Binutils 项目:

The GNU Binutils are a collection of binary tools.