Далі справді хороша довідка: http://www.ibm.com/developerworks/linux/library/l-dynamic-libraries/ . Він містить бібліографію в кінці різноманітних посилань на різних рівнях. Якщо ви хочете знати кожну деталь горі, ви можете перейти до джерела: http://www.akkadia.org/drepper/dsohowto.pdf . (Ульріх Дреппер написав динамічний лінкер Linux.)
Ви можете отримати дійсно хороший огляд усіх розділів у своєму виконуваному файлі, виконавши команду типу "objdump -h myexe" або "readelf -S myexe".
Розділ .interp містить ім'я динамічного завантажувача, який буде використовуватися для динамічного зв’язку символів у цьому об'єкті. Розділ .dynamic - це перегонка заголовка програми, відформатованого таким чином, щоб динамічний завантажувач був легким для читання. (Отже, він має вказівники на всі інші розділи.)
.Got (Загальна таблиця зміщення) та .plt (Таблиця зв’язків процедур) - це дві основні структури, якими керує динамічний лінкер. .Got - таблиця непрямості для змінних, а .plt - таблиця непрямості для функцій. Кожен виконуваний файл або бібліотека (які називаються "спільними об'єктами") мають свої .got та .plt, і це таблиці символів, на які посилається цей спільний об'єкт, які фактично містяться в якомусь іншому спільному об'єкті.
.Dynsyn містить всю інформацію про символи у вашому спільному об'єкті (як ті, які ви визначаєте, так і зовнішні, на які вам потрібно посилатися.) .Dynsyn не містить власне імен символів. Вони містяться у .dynstr, а .dynsyn має вказівники на .dynstr. .gnu.hash - хеш-таблиця, яка використовується для швидкого пошуку символів по імені. Він також містить лише покажчики (вказівники на .dynstr та покажчики, які використовуються для створення ланцюгів ковшів.)
Коли ваш спільний об'єкт відміняє деякий символ "foo", динамічний лінкер повинен шукати "foo" у всіх динамічних об'єктах, до яких ви пов'язані, щоб з'ясувати, який з них містить "foo", який ви шукаєте (а потім, яке відносне адреса "foo" знаходиться всередині цього спільного об'єкта.) Динамічний лінкер робить це шляхом пошуку в розділі .gnu.hash всіх пов'язаних спільних об'єктів (або в розділі .hash для старих спільних об'єктів, у яких немає .gnu. розділ хеш.) Після того, як він знайде правильну адресу у пов'язаному спільному об'єкті, він поставить його у .got або .plt вашого спільного об'єкта.