Linux 了解ldd的输出

Linux 了解ldd的输出,linux,ldd,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是什么意

我很难理解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处理器上编译。。。但如果它不是在英特尔处理器上编译的呢?或者当我试图在不运行英特尔处理器的计算机上运行二进制文件时? 为什么使用“]”?我猜它应该是某种链接器标识,但是“]”看起来不太像标识符。。。
提前感谢

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

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

if test -x foobar


在shell脚本中。

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

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

if test -x foobar

在shell脚本中

英特尔:Linux二进制文件并不意味着可移植 accros CPU和achitectures。这个是用来装杯子的 运行英特尔80386双进制代码。 ']': ?? 英特尔:Linux二进制文件并不意味着可移植 accros CPU和achitectures。这个是用来装杯子的 运行英特尔80386双进制代码。 ']': ??
ldd本身是一个shellscript,所以是的,它可能是/bin/[或shellbuiltin-不过,回答得很好,谢谢!ldd本身是一个shellscript,所以是的,它可能是/bin/[或shellbuiltin-尽管如此,还是很好的答案,谢谢!要添加到下面的答案中,它是Intel 80386,因为这是在ELF常量定义中注册的CPU代码。但是,所有现代CPU都将兼容。我无法从这两个方面找到答案,甚至浏览glibc源代码。要添加到下面的答案中,它是Intel 80386因为这就是在ELF常量定义中注册的CPU代码。但是,所有现代CPU都是兼容的。我也找不到这方面的答案,甚至浏览了glibc源代码。感谢链接。尽管我想知道为什么Linux二进制文件设计成不可移植的。不计算,IMHO.Linux二进制文件are不可移植。Windows二进制文件不可移植。Solaris二进制文件不可移植。AIX二进制文件不可移植…要可移植,二进制格式必须在本身不可移植的解释器上运行,而不是在真正的CPU硬件上运行。感谢链接。尽管我想知道为什么Linux二进制文件被设计为不可移植。不是吗计算机,IMHO。Linux二进制文件不可移植。Windows二进制文件不可移植。Solaris二进制文件不可移植。AIX二进制文件不可移植…要可移植,二进制格式必须在本身不可移植的解释器上运行,而不是在真正的CPU硬件上运行。