2009-09-05 3 views
1

Я хочу знать, как работает общая библиотека, которую я задаю в терминах ссылки на таблицу символов. Похоже, что когда мы включаем общую библиотеку, она экспортирует таблицу Symbol для обработки, а затем на основе некоторых указателей мы выполняем соответствующую функцию.Общая библиотека внутренняя

В чем смысл общей библиотеки Strip?

Редактировать: - Я хочу знать, как работает совместно используемая библиотека, когда она загружается в память. \ Когда функция позволяет сказать, что Fun() вызывается из приложения, имеющего def в библиотеке. то как это происходит. Надеюсь, теперь все ясно.

+0

Не могли бы вы уточнить свой вопрос - я не уверен, что именно вы спрашиваете. – DaveR

ответ

4

Программы совершают вызовы в общую библиотеку через таблицу сопоставления процедур, которая заполняется динамическим компоновщиком/загрузчиком ld.so на основе информации в таблице динамических символов и записей перемещения. В Linux эти данные хранятся в программах и библиотеках в формате ELF, которые вы можете проверить с помощью таких программ, как objdump и readelf.

This Linux Journal article имеет базовый обзор. Для получения более подробной информации ознакомьтесь с превосходной бумагой Ульриха Дреппера How To Write Shared Libraries и Solaris Linker and Libraries Guide.

+0

Спасибо, это действительно полезно. – Arpit

+0

Еще один действительно углубленный, хотя и несвободный, пояснения можно найти в книге [Linkers & Loaders] (http://rads.stackoverflow.com/amzn/click/1558604960) от Джона Р. Левина. – alanc

Смежные вопросы