ldd показывает набор связанных библиотек, но использование rabin2 -l показывает иначе. Почему это так?

Вы можете использовать пакетe2ansi , который предоставляет поддержка подсветки синтаксиса для пейджеров, таких как moreи less.

Пакет использует мать всех текстовых редакторов, Emacs , для выполнить фактическую подсветку синтаксиса. В качестве дополнительного бонуса все остальные преобразования, обычно выполняемые Emacs --, такие как распаковка файлов --также выполняется.

Пример

Ниже приведен результат просмотра файла с помощью lessиe2ansi:

Example

Конфигурация

Пакет содержит команду -линейный инструмент e2ansi-cat, которая запускает Emacs в пакетном режиме открывает файлы, выделяет их синтаксис и отображает результат с использованием последовательностей ANSI.

Вы можете интегрировать это в less, установив следующие переменные например, (расположение вашего файла инициализации может отличаться):

export "LESSOPEN=||-/usr/local/emacs --batch -Q -l ~/.emacs -l bin/e2ansi-cat %s"
export "LESS=-r"
alias "more=less -X -E"

В приведенной выше конфигурации lessвосстанавливает исходный терминал. содержимое окна, тогда как moreпросто выводит новое содержимое после быстрый.

Примечание. :Если вы используете старую версию less, она может не поддерживать ||или синтаксис -, в этом случае вам может понадобиться использовать просто LESSOPEN=|/usr/local/emacs....

Использование lessв трубах

Символ " -" в LESSOPENуказывает, что входной фильтр должен также можно использовать при передаче текста в less. В этом случае Emacs может полагаться только на сам текст (, а не на имя файла ). К счастью, Emacs предоставляет для этого систему. Кроме того, предоставленный файл file e2ansi-magic.elустанавливает дополнительные типы файлов. Например:

Pipe example

Зачем использовать Emacs?

  • Emacs поддерживает практически все языки программирования и структурированные текстовые форматы. В большинстве случаев подсветка синтаксиса поддержка отличная.
  • Вы можете легко добавить поддержку других языков и форматов или изменить существующие пакеты в соответствии с вашими потребностями.
  • Emacs поддерживает цветовые темы. При использовании e2ansiцвета в тема сохраняется при просмотре файла в less. Вы можете выбрать подходящую цветовую тему из нескольких источников или создайте свою собственную.
  • Если вы используете Emacs в качестве редактора по своему выбору, вы получите то же самое. выделение в редакторе, как при просмотре файла с помощьюless(за вычетом ограничений формата последовательности ANSI и терминала окно ).
  • lessбудет использовать возможности Emacs, которые выполняют автоматический преобразование, например, распаковка файлов. На самом деле, вы можете научить Emacs для выполнения любых преобразований, таких как автоматическое преобразование двоичный файл в удобочитаемую форму с помощью внешнего инструмента.
  • Вы можете просматривать файлы, расположенные на других машинах, используя синтаксис Emacs. для удаленного доступа, например /USER@HOST:FILENAME.

Полезные ссылки

  • e2ansiраспространяется на Melpa и может быть установлен с помощью стандартная система пакетов Emacs
  • e2ansiразмещен на GitHub
  • Страница e2ansiв Emacs Wiki
  • Домless.

Примечания к операционной системе

  • В MS Windows консоль изначально не поддерживает последовательности ANSI. К счастью, приложение lessспособно их отображать. я мне неизвестно о каком-либо современном бинарном распределении lessдля MS Windows и предоставленные файлы сборки сложны в использовании. К счастью, легко построить lessс помощью CMake , см. этот текст для подробности.

  • OS X распространяет устаревшую версию less. К счастью,это легко собрать современную версию прямо из исходников.

1
31.03.2021, 08:57
1 ответ

rabin2 -l показывает прямые зависимости бинарника, т.е. те, которые перечислены в самом бинарнике. lddпоказывает полностью -разрешенное дерево зависимостей (насколько это возможно ); это включает транзитивные зависимости. Таким образом, если бинарному файлу нужны libaи libb, а libaнужен libd, который сам нуждается в libe, rabin2 -lбудет перечислять только libaи libb, тогда как lddпокажет все четыре библиотеки (, если они все доступны ).

Вы можете сопоставить результат lddвручную, используя rabin2 -l, перечислив зависимости первого двоичного файла, затем зависимости каждой отдельной зависимости и так далее, пока не будет идентифицирована новая зависимость.

Чтобы узнать, используется ли библиотека на самом деле, вы можете использовать двоичный файл с ltraceво всех интересующих вас сценариях. Это идентифицирует вызываемые библиотечные функции. Обратите внимание, что использование некоторых библиотек будет зависеть от конфигурации -; например, библиотеки Kerberos предположительно будут использоваться только в том случае, если Kerberos настроен.

См. также ldd vs rpm -q --требует .

2
28.04.2021, 22:54

Теги

Похожие вопросы