gpt4 book ai didi

linux - linux文件命令输出中的版本号字段是什么

转载 作者:IT王子 更新时间:2023-10-29 00:50:39 25 4
gpt4 key购买 nike

如果我对在 Fedora Core 11 上编译的名为“version”的可执行文件执行以下命令,我会得到此输出

文件版本

版本:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),适用于 GNU/Linux 2.6.18,未剥离

末尾的2.6.18 数字有什么意义,是否有助于区分客户应该下载某些软件的哪个版本?

据我目前所见,这个数字绝对不是

  1. 内核版本
  2. libc 版本
  3. 任何与 lsb_release 有关的事情

我想要一些简单的标识符,让客户知道他们应该下载哪个二进制版本,理想情况下,他们应该能够通过键入命令(比如 uname -a,虽然这显然不是那个)来识别在这种情况下)。

谢谢

最佳答案

它是二进制文件在其上编译 的机器的内核版本。如果您使用来自您的发行版的预编译二进制文件,它是发行版供应商机器的内核版本,可能在其编译场中。

它是相关的,例如在考虑系统调用时。假设您的二进制文件使用系统调用号。 X并且您使用的内核不支持 X然而或更糟的是分配了系统调用号。 X到不同的系统调用。

vanilla Linux 内核用户 API 是稳定的。这意味着 Linux 版本中可用的每个系统调用 A在 Linux 版本中可用 B如果A <=B .但是可能会发生一些开发人员发布他/她自己的 Linux 开发版本(类似于 linux-2.6.18-xy )并且他/她实现了一个新的系统调用。如果她/他现在使用该内核版本编译二进制文件,则该二进制文件会被标记为该版本。因此,您稍后可以知道它可能有效,也可能无效。

顺便说一句,/usr/include/asm/unistd_32.h包含系统调用编号,摘录:

[...]
#define __NR_restart_syscall 0
#define __NR_exit 1
#define __NR_fork 2
#define __NR_read 3
#define __NR_write 4
#define __NR_open 5
[...]

关于linux - linux文件命令输出中的版本号字段是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2133832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com