为什么很多时候文件名都是这种模式 - x86_64-pc-linux-gnu

为什么很多时候文件名都是这种模式 - x86_64-pc-linux-gnu

我在 Linux 环境中看到文件名的模式是 -

x86_64-pc-linux-gnu

x86_64-linux-gnu-gcc

i386-pc-linux-gnu

看起来像名称的第一部分 -x86_64或者i386表示硬件架构。

但想知道整个名字是如何形成的?名字的其他部分是如何组成的?

答案1

这些是“配置名称”,也称为“三元组”。我所知道的最好的描述是Ian Lance Taylor 的 GNU 配置和构建系统文档

配置名称最多分为四个部分(最初是三个部分,因此有“三元组”绰号):

  • CPU 或架构 ( i386, x86_64, arm...)
  • “制造商”(pc在你的例子中)
  • 内核 ( linux)
  • 操作系统,通常归结为 C 库(gnuIEGNU 操作系统,包括 GNU C 库),但可以更具体(gnueabihf在 ARM 上,IEGNU 操作系统,使用 ARM“嵌入式”ABI 和硬浮点)

其中一些可以省略,例如pc在第二个示例中;config.sub将为您提供它识别的任何“三元组”的规范形式:

$ /usr/share/misc/config.sub x86_64-linux
x86_64-pc-linux-gnu
$ /usr/share/misc/config.sub djgpp
i586-pc-msdosdjgpp
$ /usr/share/misc/config.sub mingw32
i686-pc-mingw32
$ /usr/share/misc/config.sub vaxv
vax-dec-sysv

对于没有内核和/或操作系统的目标,还有一些变体,例如arm-none-eabi,,x86_64-pc-elf甚至x86_64-pc-none

这些配置名称用于描述构建目标,并且在交叉编译(但不仅限于)时常见。它们可以用作许多configure选项的参数,也可以用作构建工具的前缀;因此,x86_64-linux-gnu-gccGCC 正在为x86_64-linux-gnu.

它们的构造有点神秘,可能会导致冗长的辩论...

相关内容