如果我对在 Fedora Core 11 上编译的名为“version”的可执行文件执行以下命令,我会得到以下输出
文件版本
版本:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),适用于 GNU/Linux2.6.18, 未剥离
其意义何在2.6.18数字接近尾声,这对于区分客户应该下载某些软件的版本有什么用?
从我目前所看到的来看,这个数字绝对不是
- 内核版本
- libc 版本
- 与 lsb_release 有关的任何事情
我想获得一些简单的标识符,以允许客户知道他们应该下载哪个二进制版本,理想情况下他们应该能够通过键入命令来识别该版本(例如 uname -a,尽管这显然不是本例中的命令) )。
Thanks
这是二进制文件所在机器的内核版本compiled在。如果您使用发行版中的预编译二进制文件,则它是发行版供应商的机器的内核版本,可能位于其编译场中。
这是相关的,例如在考虑系统调用时。假设您的二进制文件使用系统调用号。X
并且您使用的内核不支持X
然而或更糟的是已经分配了系统调用号。X
到不同的系统调用。
普通的 Linux 内核用户 API 是稳定的。这意味着 Linux 版本中可用的每个系统调用A
适用于 Linux 版本B
if A <=B
。但某些开发人员可能会发布他/她自己的 Linux 开发版本(例如linux-2.6.18-xy
)并且她/他实现了一个新的系统调用。如果他/她现在使用该内核版本编译二进制文件,则该二进制文件将被标记为该版本。因此,您稍后可以知道它可能有效也可能无效。
Btw, /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
[...]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)