Что содержит скомпилированная статическая библиотека GCC? - PullRequest
7 голосов
/ 31 октября 2008

Мое приложение ссылается на libsamplerate.a. Я делаю это, чтобы облегчить распространение финального двоичного файла.

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

Но если это не так, я волнуюсь, я слишком сильно раздуваю свое приложение, включая несколько копий, например. Libc.

Что именно будет внутри libsamplerate.a? Просто байт-код libsamperate? Или больше?

Ответы [ 3 ]

6 голосов
/ 31 октября 2008

Файл .a - это просто набор файлов .o. Вы можете продемонстрировать это с помощью инструмента ar.

Например, для отображения содержимого вашей библиотеки:

ar -t libsamplerate.a

Чтобы создать файл .a с нуля:

ar -r tim.a *.txt
5 голосов
/ 31 октября 2008

Статическая библиотека - это просто набор объектных файлов. Когда вы компилируете программу для статической библиотеки, объектный код для функций, используемых вашей программой, копируется из библиотеки в ваш исполняемый файл. Связывание со статической библиотекой не приведет к включению каких-либо функций вне этой библиотеки в ваш код.

1 голос
/ 31 октября 2008

Просто объектный код для libsamplerate. Статическое связывание с одной библиотекой не делает статически все библиотеки связанными; это было бы плохо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...