Позиционно-независимый исполняемый файл: что такое «основной исполняемый файл»? - PullRequest
2 голосов
/ 16 января 2020

При чтении https://en.wikipedia.org/wiki/Address_space_layout_randomization я встретил термин:

Позиционно-независимый исполняемый файл (P IE) реализует случайный базовый адрес для main исполняемый двоичный файл и существует с 2003 года. Он обеспечивает такую ​​же случайность адресов для основного исполняемого файла, что и для общих библиотек.

Что означает главный исполняемый двоичный файл значит здесь? Это просто файл tu / source, содержащий основную функцию?

Ответы [ 2 ]

2 голосов
/ 16 января 2020

Это означает вывод компоновщика при сборке исполняемого файла, так называемый файл a.out в мире * nix. Компилятор создает объектные файлы, а компоновщик разрешает все зависимости в файл a.out. Некоторые из этих зависимостей будут внешними (динамические c библиотеки ссылок).

Основным исполняемым файлом будет файл, который ОС (возможно, компоновщик) загружает изначально при его запуске. Последующие загрузки будут динамическими c ссылочными библиотеками, которые являются внешними зависимостями, созданными в процессе сборки.

0 голосов
/ 16 января 2020

Я предполагаю, что это двоичный файл с функцией main(), поэтому программа в строгом смысле.

Раньше программы загружались по указанным c адресам, но библиотеки динамических c уже загружались по адресу разные адреса, поэтому я думаю, что main здесь просто для того, чтобы подчеркнуть, что это для двоичного файла программы, а не для двоичных файлов библиотеки.

...