Библиотеки динамического связывания в C

#matplotlib #assembly #dll #binary #got

#matplotlib #сборка #dll #двоичный #есть

Вопрос:

Я следил за курсом liveoverflow об использовании двоичных файлов, когда у меня возникли проблемы с просмотром части его видео. В видео показан двоичный файл, связанный с библиотекой, которая вызывает функцию puts, на видео показано, что перед первым выполнением функции GOT была пустой, и у двоичного файла не было возможности узнать, где находится функция, когда я скомпилировал свой двоичный файл ELF, я обнаружил, чтоеще до вызова функции _start эти адреса были заполнены адресом puts . Я действительно не могу понять, почему такое происходит.

Комментарии:

1. Я думаю, динамический загрузчик ld.so делает это при загрузке вашего двоичного файла.

2. См. Также man ld.so , в частности, «LD_BIND_NOW, если установлено значение непустой строки, заставляет динамический компоновщик разрешать все символы при запуске программы вместо того, чтобы откладывать разрешение вызова функции до момента, когда на них впервые ссылаются. Это полезно при использовании отладчика.»

3. В каком файле установлена эта переменная среды? Я лично не смог найти никакой информации.

4. Он может быть установлен где угодно, или в зависимости от того, как вы смотрите на GOT, функциональность может быть включена отладчиком.