Некоторые функции, которые не вызываются из комментариев, которые я видел до сих пор.
Статическое связывание (.a/.lib)
Совместное использование памяти между этими единицами компиляции, как правило, хорошо, потому что они должны (? Будет) все использовать тот же среду выполнения.
Статическая связь означает, что вы избегаете «dll hell», но стоимость заключается в перекомпиляции, чтобы вообще использовать какие-либо изменения. статическая привязка к общим библиотекам (.so) может привести к странным результатам, если у вас более одной такой разделяемой библиотеки, используемой конечным исполняемым файлом - глобальные переменные могут существовать несколько раз, а какие используются и когда они инициализируются, могут привести к совершенно другому ад.
Библиотека будет частью поставляемого продукта, но запутана и не будет использоваться непосредственно.
Shared/динамические библиотеки (.so/.dll)
Совместное использование памяти между этими единицами компиляции могут быть опасными, поскольку они могут выбрать использовать различные среды выполнения. Это может означать, что вы предоставляете разные общие/динамические библиотеки на основе отладки/выпуска или одиночной/многопоточной или ...
Общие библиотеки (.so) менее подвержены «dll hell», а затем Dynamic libraries (.dll) поскольку они включают опции для довольно конкретного управления версиями.
Компиляция с .so будет захватывать информацию о версии внутри файла (трудно подделать), чтобы вы получили довольно специфическое использование .so. Компиляция с .lib/.dll дает только базовое имя файла, любое управление версиями выполняется разработчиком (с помощью илименования или вручную загрузки библиотеки и проверки сведений о версии вручную)
Библиотека должна будет отправить с помощью конечный продукт (кто-то может его забрать и использовать)
См. [Разница между статической и общей библиотекой в C ] (http://stackoverflow.com/questions/2649334/difference-between-static-and-shared-library-in-c). –
Иногда создание обоих типов библиотек является подходящим. – aschepler
Это зависит от того, что вы хотите. –