Вопрос
Мне трудно понять вывод ldd, особенно идентификаторы процессора.Речь идет о следующей строке:
Shortest.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, from ']', not stripped
У меня есть несколько вопросов по этому поводу:
- Что означает «ЭЛЬФ»?Я знаю, как называются двоичные файлы Linux (двоичные файлы Windows называются двоичными файлами PE, «переносимыми исполняемыми файлами»), но разве ELF не является аббревиатурой чего-то?
- Что означает ЛСБ?Я даже предположить не могу...
- Я вижу там строку «Intel», и теперь я серьезно задаюсь вопросом о переносимости двоичных файлов Linux, поскольку ldd, похоже, ожидает, что каждый двоичный файл будет скомпилирован на процессоре Intel...но что, если он не был скомпилирован на процессоре Intel?Или когда я пытаюсь запустить двоичный файл на компьютере, который не работает на процессоре Intel?
- Почему ']'?Я предполагаю, что это должно быть что-то вроде идентификатора компоновщика, но ']' не очень похоже на идентификатор...
заранее спасибо
Решение
ELF — это исполняемый файл и формат Linkable — он определяет формат библиотеки — см. Исполняемый и связываемый формат.LSB указывает порядок байтов данных.Intel 386 означает, что он будет работать на всех чипах, совместимых с 386, включая Pentium и чипы AMD, но не (скажем) на архитектурах Power PC или IBM/370.
Что касается ']', то эта библиотека не будет иметь ничего общего с тестовой утилитой, не так ли?Тот, который позволяет вам сказать:
if test -x foobar
или
if [ -x foobar ]
в сценариях оболочки.
Другие советы
- ЭЛЬФ
- младший бит
- Интел:Двоирные файлы Linux не предназначены для портативных процессоров Accros и ахитектур.Этот предназначен для использования на чашке, способной запускать код Birary Intel 80386.
- ']': ??
Не связан с StackOverflow