Операционная система UNIX. Руководство программиста

       

Обеспечение совместимости с архивной библиотекой


Совместимость библиотек облегчает замену одной на другую. Почти во всех случаях такой совместимости можно достичь без каких-либо изменений в исходных или make-файлах. Проще всего пояснить это на примере:

Когда мы создавали разделяемую библиотеку языка C...
Мы взяли за основу существующую архивную библиотеку, что, очевидно, дало нам исходные тексты подпрограмм и модель для определения содержимого разделяемой библиотеки.

Мы хотели, чтобы разделяемая библиотека сборки была совместима с существующей перемещаемой библиотекой языка C. Вместе с тем, нам не хотелось включать в разделяемую библиотеку выполнения все подпрограммы из архивной библиотеки, так как это понизило бы эффективность работы разделяемой версии.

Достичь обеих целей было проще, чем может показаться. Мы создавали разделяемую библиотеку сборки в два этапа. На первом мы использовали средства построения разделяемых библиотек и получили разделяемую библиотеку сборки, точно соответствующую разделяемой библиотеке выполнения. Затем мы добавили в разделяемую библиотеку сборки недостающие об,ектные (перемещаемые) модули из архивной библиотеки языка C. Хотя соответствующие функции и отсутствуют в разделяемой библиотеке выполнения, их наличие в библиотеке сборки обеспечивает совместимость разделяемой и перемещаемой библиотек языка C.



Содержание раздела