1

我很难理解 ldd 的输出——尤其是处理器标识符。有问题的字符串是这个:

Shortest.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, from ']', not stripped

我有几个问题:

  • “精灵”是什么意思?我知道这就是 Linux 二进制文件的名称(Windows 二进制文件称为 PE 二进制文件、“可移植的可执行文件”二进制文件),但 ELF 不是某种东西的缩写吗?
  • LSB 是什么意思?我也猜不出来...
  • 我在那里看到字符串“Intel”,现在我非常想知道 Linux 二进制文件的可移植性,因为 ldd 似乎希望每个二进制文件都在英特尔处理器上编译......但是如果它不是在英特尔处理器上编译的呢?或者当我尝试在没有在英特尔处理器上运行的计算机上运行二进制文件时?
  • 为何 ']'?我的猜测是它应该是某种链接器标识,但 ']' 看起来不太像标识符......

提前致谢

4

2 回答 2

3

ELF 是可执行和可链接格式 - 它指定库的格式 - 请参阅可执行和可链接格式。LSB 指定数据的字节顺序。英特尔 386 意味着它将在与 386 兼容的所有芯片上运行,包括奔腾和 AMD 的芯片,但不包括(比如)Power PC 或 IBM/370 架构。

至于']',这个库与测试实用程序没有任何关系,不是吗?一个允许你说:

if test -x foobar

或者

if [ -x foobar ]

在 shell 脚本中。

于 2010-06-08T08:46:37.757 回答
2
  • 精灵
  • 最低位
  • 英特尔:Linux 二进制文件并不意味着是可移植的跨 CPU 和架构。这个是用于能够运行 Intel 80386 二进制代码的 CUP。
  • ']': ??
于 2010-06-08T08:47:06.287 回答