Понимание вывода ldd - PullRequest
1 голос
/ 08 июня 2010

Мне трудно понять вывод 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" там, теперь я серьезно задаюсь вопросом о переносимости двоичных файлов Linux, поскольку ldd, похоже, ожидает, что каждый двоичный файл будет скомпилирован на процессоре Intel ... но что, если он не был скомпилирован на Процессор Intel? Или когда я пытаюсь запустить двоичный файл на компьютере, который не запускается поверх процессора Intel?
  • Почему ']'? Я предполагаю, что это должен быть какой-то идентификатор Линкера, но ']' не очень похож на Идентификатор ...

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 08 июня 2010

ELF является исполняемым и Linkable Format - он определяет формат библиотеки - см. Исполняемый и Linkable Format . LSB определяет порядок данных. Intel 386 означает, что он будет работать на всех чипах, совместимых с 386, включая Pentiums и AMD, но не (скажем, Power PC или IBM / 370).

Что касается '], эта библиотека не имеет ничего общего с утилитой тестирования, не так ли? Тот, который позволяет вам сказать:

if test -x foobar

или

if [ -x foobar ]

в сценариях оболочки.

2 голосов
/ 08 июня 2010
  • ELF
  • LSB
  • Intel: двоичные файлы Linux не предназначены для переноса по процессорам и архитектуре. Этот предназначен для использования на CUP запустить двухбуквенный код Intel 80386.
  • ']': ??
...