静态库和命令行应用程序之间有什么区别?

时间:2017-01-10 16:07:23

标签: static-libraries executable

我知道命令行应用程序是独立的,可以从shell调用。另一方面,静态库由其他程序链接。

但实际上两者之间的区别是什么?它是不同接口的二进制文件吗?或者它完全不同?

1 个答案:

答案 0 :(得分:0)

这完全不同。独立应用程序具有可以直接执行的二进制产品。但是静态库不能自己执行。独立应用程序可以链接到一组静态库,在这种情况下,应用程序可以访问这些库中定义的符号。

为了举例说明,您可以创建一个静态库,在helper.h中声明以下函数并在helper.c中定义:

int func() {
    printf("hi\n");
}

当你构建这个库时,你最终会得到类似helper.a的东西,它不能独立执行(它没有int main())但可以通过一个或多个独立的链接应用。关联后,这些应用只需包含helper.h并致电func(),就像他们已实施func()一样。

最后,在两者之间进行选择取决于您要实现的目标。您是否尝试创建多个应用程序可以链接并使用的工具?然后使用静态库。