gcc --version 的输出是什么意思

Emi*_*eil 5 package-management versions gcc

这是输出gcc --version

./gcc --version
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Run Code Online (Sandbox Code Playgroud)

我知道这是版本 7.5.0,但是为什么版本之前有“Ubuntu”这个词,而它后面的“-3ubuntu1~18.04”在这个上下文(gcc 版本)中到底意味着什么?

该手册并没有真正帮助我:

   --version
       Display the version number and copyrights of the invoked GCC.
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,我不仅仅是询问 XubuntuY 的含义。我现在知道这个问题已经在这里得到了解答。我想了解上面的整个字符串,包括为什么指定 ubuntu 版本。

gui*_*erc 7

您正在使用gcc版本 7.5.0,这是上游版本。

关于受支持的已发布产品;安全修复程序向后移植到现有软件包(除了少数例外),因此其余详细信息提供了 Ubuntu 软件包中包含的安全修复程序的详细信息。

有用的链接 - https://packages.ubuntu.com/bionic-updates/gcc-7

您将在其中看到更改日志链接,其中给出了含义,即。

gcc-7 (7.5.0-3ubuntu1~18.04) 仿生提出;紧急程度=中

  • SRU:LP:#1848319。* 将 GCC 7.5.0 向后移植到仿生。

-- Matthias Klose doko@ubuntu.com 2019 年 12 月 4 日星期三 15:25:41 +0100

IE。您已获得有关导致创建该版本/包的修复程序的详细信息(如果您想要/需要该信息)。


Pet*_*een 2

据我了解。

括号中的部分是供应商特定的信息。Ubuntu 告诉你这是 gcc 的 Ubuntu 版本,后面的字符串是软件包版本。

包版本由连字符分成两部分(如果有多个连字符,则使用最后一个连字符进行分割)。“上游版本”和“Debian 修订版”(在某些情况下也可能有纪元)。“上游版本”可能是上游使用的文字版本号,也可能包含其他指示,例如 +dfsg 表示非自由文件已从原始 tarball 中剥离,或 +git 表示打包的内容实际上是一个 git 快照。

在这种情况下,“上游版本”是“7.5.0”(与字面上游版本相同),“Debian 修订版”是“3ubuntu1~18.04”

“Debian 修订版”中的更改标识 Debian 或其衍生版本中的更改,这些更改不会更改上游 tarball 的内容。分配版本号时有一些基本原则。

  • 它应该尽可能唯一地标识包的版本。显然,对于多个人制作软件包来说,这不能 100% 保证,但有一种普遍接受的做法,即衍生品应在他们分配的版本号中包含唯一的“标签”。
  • 当版本更新时,版本号必须增加(根据比较规则),以便用户真正获得升级。
  • 当一个软件包位于发行版的多个版本中时,新版本中的版本必须高于旧版本中的版本,以便升级系统的用户获得正确的版本。
  • 它应该对用户有意义。

版本号中的波形符比较特殊,在版本比较算法中它比较的是低于空字符串,即 "1.2.3-2~foo" < "1.2.3-2" < "1.2.3-2foo" 它通常在将包向后移植到早期版本时使用,它也用于表示预发行版本。

现在让我们分解这个软件包的“Debian 修订版”。

  • “3”是 Debian 本身的修订版,表明该 Ubuntu 软件包所基于的 Debian 软件包是他们对 7.5.0 软件包进行的第三次修订。
  • “ubuntu1”表示这个包被Ubuntu修改过。
  • ~ 通常表明这是某种向后移植。
  • 18.04 似乎表明该软件包已向后移植到哪个版本。据我所知,这似乎是临时使用。对于如何对上传到反向移植存储库的反向移植进行版本控制有一些标准,但此反向移植是作为稳定更新发布的,而不是通过反向移植存储库发布的。稳定更新过程似乎没有强制要求特定的版本控制方案,它建议使用安全更新过程中的版本控制方案,但这似乎并不涵盖向后移植包的情况。