Обеспечение совместимости с архивной библиотекой
Совместимость библиотек облегчает замену одной на другую. Почти во всех случаях такой совместимости можно достичь без каких-либо изменений в исходных или make-файлах. Проще всего пояснить это на примере:
Когда мы создавали разделяемую библиотеку языка C... |
Мы взяли за основу существующую архивную библиотеку, что, очевидно, дало нам исходные тексты подпрограмм и модель для определения содержимого разделяемой библиотеки. |
Мы хотели, чтобы разделяемая библиотека сборки была совместима с существующей перемещаемой библиотекой языка C. Вместе с тем, нам не хотелось включать в разделяемую библиотеку выполнения все подпрограммы из архивной библиотеки, так как это понизило бы эффективность работы разделяемой версии.
Достичь обеих целей было проще, чем может показаться. Мы создавали разделяемую библиотеку сборки в два этапа. На первом мы использовали средства построения разделяемых библиотек и получили разделяемую библиотеку сборки, точно соответствующую разделяемой библиотеке выполнения. Затем мы добавили в разделяемую библиотеку сборки недостающие об,ектные (перемещаемые) модули из архивной библиотеки языка C. Хотя соответствующие функции и отсутствуют в разделяемой библиотеке выполнения, их наличие в библиотеке сборки обеспечивает совместимость разделяемой и перемещаемой библиотек языка C.