Почему некоторые статические библиотеки перемещены в папку /lib?

#cmake #build #static-libraries #static-linking

#cmake #сборка #статические библиотеки #статическое связывание

Вопрос:

Я смотрел несколько обучающих видеороликов, подключенных к CMake, и в одном из них (ссылка) автор установил статическую библиотеку (.a) в user / local / lib. Мне интересно, какая может быть польза от их размещения там. Насколько я знаю, после компиляции статические библиотеки упаковываются в конечный исполняемый двоичный файл. По моему мнению, в папку / lib следует перемещать только общие библиотеки.

Или, может быть, речь идет о том, чтобы избежать перекомпиляции в процессе сборки в случае статических библиотек. Приветствуется любая помощь.

Ответ №1:

Обычно причиной установки статических библиотек является возможность использовать их для компиляции нескольких исполняемых двоичных файлов в целевой системе (даже в разных пакетах, поэтому не обязательно из одного дерева исходных текстов). Для этой цели существуют также статические библиотеки, которые упакованы, и фактически некоторые пакеты отправляют файлы .so и .a из одной библиотеки (в моей системе Debian, например, /usr/lib/x86_64-linux-gnu/{libpng16.a,libpng16.so} из libpng-dev пакета), поэтому его можно использовать как для статически, так и для динамически связанных исполняемых файлов (что также может быть вопросом лицензирования). Если в вашем проекте вы не хотите устанавливать статическую библиотеку, а используете ее только во время компиляции конечного исполняемого файла, вы можете настроить это в своем CMakeLists.txt .