Статические библиотеки по умолчанию живут в /usr/lib
или, /usr/lib64
но я удалил все из них в моей ОС с этой командой:
find / -name *.a -exec rm -rf {} \;
Мой linux уже в порядке, и все работает хорошо!
Можем ли мы сказать?
"Package.rpm или * .deb содержат выходные данные компилятора, только им нужны общие библиотеки.
И когда мы устанавливаем программное обеспечение из исходного кода, если в структуре используется статическая библиотека, компоновщик во время компиляции, скопируйте статические библиотеки в его исполняемый файл.
Без *.a
файлов в моей системе, возможно, в будущем, если я установлю программное обеспечение из исходного кода, у меня возникнут проблемы "
Пожалуйста, объясните мне это простым способом
Ответы:
Статические библиотеки - это библиотеки, используемые двоичными файлами во время компиляции. Они обычно не используются снова во время выполнения, поскольку они связаны с откомпилированным двоичным файлом во время компиляции и становятся частью самого двоичного файла.
Кроме того, при реализации они не используются совместно двоичными файлами, их использует только двоичный файл, скомпилированный с конкретными статическими библиотеками. Таким образом, в приложении они полностью противоположны статически связанным библиотекам.
Обратите внимание, что статические библиотеки заканчиваются,
.a
а динамические библиотеки заканчиваются на.so
.источник
dev
пакетами, которые в основном используются для компиляции ..Статические библиотеки - это двоичные независимые пакеты скомпилированного исходного кода, которые вы «импортируете» в свое приложение при статической сборке.
Действительно, программа, называемая линкером, выполняет своего рода «копирование и вставку» своего скомпилированного кода вместе с вашим скомпилированным исходным кодом (это немного сложнее, но это объяснение может пригодиться для ответа на ваш запрос ...) ,
Затем сообщение, о котором вы сообщили в OP, в синтезе говорит, что удаление статических библиотек из каталога "lib" не создает проблем для установленных программ, потому что, как уже было сказано, они уже "вставлены" в двоичные файлы установленные программы, и это может произойти в Linux, потому что его программы обычно распределяются напрямую по их некомпилированному исходному коду, и поэтому им требуется этап компиляции, который обычно выполняется с помощью rpm или других linux-пакетов / менеджеров установки.
Вместо этого, как всегда в опубликованном сообщении говорится, что если вы устанавливаете новые программы, то установка может завершиться неудачей, если они нуждаются в удаленных библиотеках, поскольку при компиляции компоновщик не найдет необходимые (ссылочные) статические библиотеки.
Надеюсь понятно, простите за мой плохой английский ..
источник