6

如果我对在 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,尽管在这种情况下显然不是那个) )。

谢谢

4

1 回答 1

7

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

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

vanilla Linux Kernel User API 是稳定的。这意味着A如果. 但是可能会发生一些开发人员发布他/她自己的 Linux 开发版本(类似于)并且他/她实现了一个新的系统调用。如果她/他现在使用该内核版本编译二进制文件,则该二进制文件将被标记为该版本。因此,您稍后可以知道它可能有效,也可能无效。BA <=Blinux-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
[...]
于 2010-01-25T16:40:10.947 回答