Разница между статической библиотекой и перемещаемым объектным файлом? - PullRequest
8 голосов
/ 16 марта 2012

В чем разница между статической библиотекой и перемещаемым объектным файлом?Или между динамической библиотекой и общим объектным файлом.

И если это не то же самое, что есть у динамической библиотеки, которая позволяет с ней связываться, а у общего объектного файла нет?

Ответы [ 3 ]

7 голосов
/ 16 марта 2012

Статическая библиотека - это просто набор объектных файлов. Обычно это просто ar архив объектных файлов. Используя ar, вы можете извлекать объектные файлы из библиотеки, добавлять в нее различные объектные файлы и т. Д.

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

1 голос
/ 16 марта 2012

Динамические (общие) библиотеки используют код PIC - код будет работать независимо от фактического физического расположения библиотеки, которая используется несколькими исполняемыми файлами в памяти.

Статические библиотеки связаныв исполняемый файл во время поэтапного связывания для создания исполняемого файла.

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

0 голосов
/ 27 февраля 2014

Библиотеки Shard экономят дисковое пространство, если они используются более чем одним исполняемым файлом. Если несколько исполняемых файлов, которые используют одну и ту же функцию из общей библиотеки. работают каждый получит свою копию. Ни один исполняемый файл на диске не будет содержать код этой функции, а скорее ссылку на общую библиотеку.

...