【发布时间】:2010-06-08 08:38:32
【问题描述】:
我很难理解 ldd 的输出——尤其是处理器标识符。 有问题的字符串是这个:
Shortest.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, from ']', not stripped
我有几个问题:
- “ELF”是什么意思?我知道这就是 Linux 二进制文件的名称(Windows 二进制文件称为 PE 二进制文件、“可移植的可执行文件”二进制文件),但 ELF 不是某种东西的缩写吗?
- LSB 是什么意思?我什至猜不出来...
- 我在那里看到字符串“Intel”,现在我非常想知道 Linux 二进制文件的可移植性,因为 ldd 似乎期望每个二进制文件都在英特尔处理器上编译...但是如果它不是在英特尔处理器?或者,当我尝试在未在英特尔处理器上运行的计算机上运行二进制文件时?
- 为什么是“]”?我的猜测是它应该是某种链接器标识,但 ']' 看起来不太像标识符......
提前致谢
【问题讨论】:
-
添加到下面的答案中,它是“Intel 80386”,因为这就是 CPU 代码在 ELF 常量定义中注册的内容。但是,所有现代 CPU 都将兼容。即使浏览 glibc 源,我也找不到“来自”的答案。