Это совсем другое. У автономного приложения есть двоичный продукт, который может быть выполнен непосредственно. Однако статические библиотеки не могут выполняться самостоятельно. Отдельное приложение может ссылаться на набор статических библиотек, и в этом случае символы, определенные в этих библиотеках, будут доступны для приложения.
Чтобы дать вам пример, вы можете создать статическую библиотеку, которая декларирует следующую функцию в helper.h
и определяет его в helper.c
:
int func() {
printf("hi\n");
}
При создании этой библиотеки, вы будете в конечном итоге с чем-то вроде helper.a
который не может быть выполнен независимо (он не имеет int main()
), но может быть связан одним или несколькими автономными приложениями. После подключения эти приложения могут просто включать helper.h
и звонить func()
, как если бы они реализовали func()
.
В конце концов, выбор между ними зависит от того, чего вы пытаетесь достичь. Вы пытаетесь создать инструмент, к которому могут подключаться и использовать несколько приложений? Затем перейдите к статической библиотеке.
Что? Это буквально сравнивает яблоки с апельсинами. –
Не обязательно нужна оболочка для запуска/запуска (любой) программы. – alk
Не знаете, почему пустые голоса. Один и тот же код может быть скомпилирован как в автономное приложение, так и в статическую библиотеку. Я пытаюсь понять разницу между ними. – dwkns