.so - это не статическая библиотека, а динамическая.Статическая библиотека - это, по сути, файл .o, скомпилированный из одного файла C, или файл .a, который представляет собой просто набор файлов .o.
Статическая библиотека отличается от общейодна в том, что объектный код напрямую связан с конечным исполняемым файлом, не требуя никаких зависимостей во время выполнения.
В Unix команда ar (1) используется для объединения файлов .o в составной файл .aфайл.Я не знаю сопоставимой утилиты для Windows.
После того, как у вас есть файл .a, вам просто понадобится комбинация файлов .a и .h для создания кода.Вы используете файлы .h для компиляции, а затем связываетесь с файлом .a.
Общие библиотеки имеют особое преимущество перед статическими библиотеками в том, что если у вас есть несколько, но разные, программы, использующие одни и те же библиотеки,код из разделяемых библиотек может совместно использоваться всеми программами одновременно, поэтому в этом смысле они снижают общее воздействие на систему.Их недостаток - более медленные времена запуска (хотя это довольно незначительно в настоящее время).Статически связанные библиотеки не могут совместно использоваться независимыми программами, но если вы запускаете один и тот же исполняемый файл несколько раз, его код будет совместно использоваться.