Что означает предварительная ссылка в контексте ld.so и как LD_TRACE_PRELINKING влияет на нее - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь понять все способы, которыми я могу манипулировать ld.so, и я не могу понять документацию для переменной окружения LD_TRACE_PRELINKING.

Страница руководства гласит:

       LD_TRACE_PRELINKING (since glibc 2.4)
              If this environment variable is defined, trace prelinking of the object whose name is assigned to this environment variable.  (Use ldd(1) to get a list of the objects that might be traced.)  If the object name is not recognized, then
              all prelinking activity is traced.

Что не очень полезно, так как я не могу найти никакой информации о том, что предварительно связывает объекта в контексте ld.so, и отслеживается ли это также при активации LD_TRACE_LOADED_OBJECTS.

Итак, что такое предварительная ссылка в ld.so и как LD_TRACE_PRELINKING влияет на ld.so?

1 Ответ

1 голос
/ 09 апреля 2020

Динамический загрузчик / компоновщик c (например, ld.so) должен выполнять операции разрешения символов и привязки в начале выполнения программы и при динамической загрузке разделяемых библиотек. Некоторые из этих действий могут быть выполнены заранее без фактического выполнения программного кода, а результаты могут быть кэшированы для использования во время фактического выполнения. Это улучшает время запуска и общее время выполнения программы. На linux, prelink - это инструмент, который управляет этой оптимизацией, а основные функции реализованы в ld.so.

...