1

lddの出力(特にプロセッサ識別子)を理解するのに苦労しています。問題の文字列は次のとおりです。

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

私はそれについていくつか質問があります:

  • 「ELF」とはどういう意味ですか?Linuxバイナリはそのように呼ばれています(WindowsバイナリはPEバイナリ、「Portable Executable」バイナリと呼ばれています)が、ELFは何かの略語ではありませんか?
  • LSBとはどういう意味ですか?推測すらできない…
  • そこに文字列「Intel」が表示されますが、lddはすべてのバイナリがIntelプロセッサでコンパイルされることを期待しているように見えるので、Linuxバイナリの移植性について真剣に疑問に思います...しかし、Intelプロセッサでコンパイルされなかった場合はどうなりますか?または、Intelプロセッサ上で実行されていないコンピュータでバイナリを実行しようとするとどうなりますか?
  • なぜ ']'?私の推測では、それはある種のリンカー識別であるはずですが、「]」は識別子のようには見えません...

前もって感謝します

4

2 に答える 2

3

ELFは実行可能でリンク可能なフォーマットです-ライブラリのフォーマットを指定します-実行可能でリンク可能なフォーマットを参照してください。LSBは、データのエンディアンを指定します。Intel 386は、Pentiumを含む386と互換性のあるすべてのチップ、およびAMDのチップで動作しますが、PowerPCまたはIBM/370アーキテクチャでは動作しないことを意味します。

']'に関しては、このライブラリはテストユーティリティとは何の関係もありませんね。あなたが言うことを可能にするもの:

if test -x foobar

また

if [ -x foobar ]

シェルスクリプトで。

于 2010-06-08T08:46:37.757 に答える
2
  • 妖精
  • LSB
  • Intel:Linuxバイナリは、CPUやアーキテクチャを移植できるものではありません。これは、Intel80386バイナリコードを実行できるCUPで使用することを目的としています。
  • ']':??
于 2010-06-08T08:47:06.287 に答える