了解ldd的输出

时间:2010-06-08 08:38:32

标签: linux ldd

我很难理解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处理器上编译......但是如果它没有编译在一个Intel处理器?或者当我尝试在不运行Intel处理器的计算机上运行二进制文件时?
  • 为什么']'?我的猜测应该是某种链接器识别,但']'看起来不像识别器......

提前致谢

2 个答案:

答案 0 :(得分:3)

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

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

if test -x foobar

if [ -x foobar ]

在shell脚本中。

答案 1 :(得分:2)

  • ELF
  • LSB
  • 英特尔:Linux二进制文件并不是可移植的 accros CPU和架构。这个用于CUP能够使用 运行英特尔80386生物代码。
  • ']':?? ??