Что содержит скомпилированная статическая библиотека GCC?

StackOverflow https://stackoverflow.com/questions/254526

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

ar -t libsamplerate.a

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

ar -r tim.a *.txt

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top