Какова роль статических библиотек?

4

Статические библиотеки по умолчанию живут в /usr/libили, /usr/lib64но я удалил все из них в моей ОС с этой командой:

find / -name *.a -exec rm -rf {} \;

Мой linux уже в порядке, и все работает хорошо!

Можем ли мы сказать?

"Package.rpm или * .deb содержат выходные данные компилятора, только им нужны общие библиотеки.

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

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

Пожалуйста, объясните мне это простым способом

Sinoosh
источник
1
... Почему? Это все равно что сказать: «Я не использую яички в своей повседневной жизни, давайте их отрезать. О, я все еще могу есть, спать и работать, так что я в порядке».
Бакуриу
:)) это был тест на понимание
Sinoosh

Ответы:

8

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

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

Обратите внимание, что статические библиотеки заканчиваются, .aа динамические библиотеки заканчиваются на .so.

heemayl
источник
Я думаю, что статическая библиотека является частью приложения, и после установки ей не нужен ее источник
Sinoosh
@Sinoosh Да, ответ уточнил ..
Heemayl
Спасибо за редактирование, если я удалю весь файл статики, возможно, в будущем у меня возникнут проблемы при компиляции :)
Sinoosh
1
@Sinoosh, обратите внимание, что статические библиотеки в основном поставляются с devпакетами, которые в основном используются для компиляции ..
поэтому,
2

Статические библиотеки - это двоичные независимые пакеты скомпилированного исходного кода, которые вы «импортируете» в свое приложение при статической сборке.

Действительно, программа, называемая линкером, выполняет своего рода «копирование и вставку» своего скомпилированного кода вместе с вашим скомпилированным исходным кодом (это немного сложнее, но это объяснение может пригодиться для ответа на ваш запрос ...) ,

Затем сообщение, о котором вы сообщили в OP, в синтезе говорит, что удаление статических библиотек из каталога "lib" не создает проблем для установленных программ, потому что, как уже было сказано, они уже "вставлены" в двоичные файлы установленные программы, и это может произойти в Linux, потому что его программы обычно распределяются напрямую по их некомпилированному исходному коду, и поэтому им требуется этап компиляции, который обычно выполняется с помощью rpm или других linux-пакетов / менеджеров установки.

Вместо этого, как всегда в опубликованном сообщении говорится, что если вы устанавливаете новые программы, то установка может завершиться неудачей, если они нуждаются в удаленных библиотеках, поскольку при компиляции компоновщик не найдет необходимые (ссылочные) статические библиотеки.

Надеюсь понятно, простите за мой плохой английский ..

a25bedc5-3d09-41b8-82fb-ea6c353d75ae
источник