Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Объектные библиотеки



Крупные программы часто состоят из сотен и тысяч отдельных модулей. Кроме того, существуют различные пакеты подпрограмм, также состоящие из большого количества модулей. Один из таких пакетов используется прак­тически в любой программе на языке высокого уровня — это так называе­мая стандартная библиотека. Для решения проблем, возникающих при под­держании порядка в наборах из большого количества объектных модулей, были придуманы библиотеки объект­ных модулей.

Библиотека, как правило, представляет собой последовательный файл, со­стоящий из заголовка, за которым последовательно располагаются объект­ные модули. В заголовке содержится следующая информация.

□ Список всех объектных модулей, со смещением каждого модуля от нача­ла библиотеки. Смещение нужно для того, чтобы можно было легко най­ти требуемый модуль.

□ Список всех глобальных символов, определенных в каждом из модулей, с указанием, в каком именно мо­дуле он был определен.

Линкер обычно собирает в программу все объектные модули, которые были ему, заданы в ко­мандной строке, даже если на этот модуль не было ни одной ссылки. С библиотечными модулями он ве­дет себя несколько иначе.

Встретив ссылку на глобальный символ, компоновщик ищет опре­деление этого символа во всех мо­дулях, которые ему были заданы. Если там такого символа нет, то линкер ищет этот символ в заголов­ке библиотеки. Если его нет и там, компоновщик сообщает: "Не опре­делен символ SYMBOL", — и за­вершает работу. Некоторые редак­торы связей, правда, могут продолжить работу и даже собрать загружаемый модуль, но, как правило, таким модулем пользоваться нельзя, так как в нем содержится ссылка на некорректный адрес. Если же определение символа библиотеке есть, компоновщик "вытаскивает" соответствующий модуль и дальше работает так, будто этот модуль был задан ему наравне с остальными объектными файлами. Этот процесс повторяется до тех пор, пока не будут разрешены все глобальные ссылки, в том числе и те, которые возникли библиотечных модулях, или пока не будет обнаружен неопределенный сим­вол. Благодаря такому алгоритму в программу включаются только те модуль из библиотеки, которые нужны.

В системах семейства Unix библиотеки такой структуры называются архив ними библиотеками, чтобы отличить их от разделяемых библиотек.





Дата публикования: 2014-11-29; Прочитано: 186 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...