我知道命令行应用程序是独立的,可以从shell调用。另一方面,静态库由其他程序链接。
但实际上两者之间的区别是什么?它是不同接口的二进制文件吗?或者它完全不同?
答案 0 :(得分:0)
这完全不同。独立应用程序具有可以直接执行的二进制产品。但是静态库不能自己执行。独立应用程序可以链接到一组静态库,在这种情况下,应用程序可以访问这些库中定义的符号。
为了举例说明,您可以创建一个静态库,在helper.h
中声明以下函数并在helper.c
中定义:
int func() {
printf("hi\n");
}
当你构建这个库时,你最终会得到类似helper.a
的东西,它不能独立执行(它没有int main()
)但可以通过一个或多个独立的链接应用。关联后,这些应用只需包含helper.h
并致电func()
,就像他们已实施func()
一样。
最后,在两者之间进行选择取决于您要实现的目标。您是否尝试创建多个应用程序可以链接并使用的工具?然后使用静态库。