Создание как статических, так и общих библиотек C ++ - PullRequest
7 голосов
/ 01 февраля 2011

Я бы хотел построить статическую и совместно используемую библиотеки в проекте.

Я знаю, что общие библиотеки нужно создавать из объектов, скомпилированных с -fpic, чтобы получить независимую позициюКод, в то время как статическая библиотека не нуждается в этом.Это все нормально, и я могу создать разделяемую или статическую библиотеку.

Я бы не хотел дважды скомпилировать исходный код, чтобы получить разные объектные файлы, так как это обычно делается?Я прочитал как получить общую библиотеку на основе статической .Однако в этом примере показана статическая библиотека, создаваемая с -fpic.Это путь?Есть ли что-то, с чем следует об этом знать?

Существует ли общий подход к компиляции статических и разделяемых библиотек?Например, сначала статический и на основе lib создается совместно используемая версия?

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

Я использую gcc4.4 в Linux.

Заранее спасибо!

1 Ответ

6 голосов
/ 01 февраля 2011

Обычный подход, который я видел, на самом деле компилирует ваш источник дважды , один раз с PIC и один без. Если вы этого не сделаете, вы либо столкнетесь с издержками PIC в статической библиотеке, либо с общим объектом, который не может быть перемещен ОС (фактически это означает, что он НЕ используется несколькими клиентами библиотеки).

...