了解静态和共享库
静态库(.a 文件)在链接阶段被合并到应用程序中,其中整个库的副本被集成到最终的可执行文件中。因此,应用程序是独立的,可以随时访问库函数。
相比之下,共享对象(.so 文件)仅在运行期间对其相应的头文件(.h)进行运行时兼容性检查。链接。它们直到需要时才会加载,从而提供了替换“.so”文件的灵活性,而无需重新编译应用程序。
共享对象和 DLL 之间的区别
虽然共享对象和动态链接库 (DLL) 共享“.so”扩展名,但它们在 Linux 和 POSIX 兼容系统上表现出一些显着差异。
共享对象通常在应用程序启动时自动加载并作为单独的实体保持可用。然而,DLL 需要通过应用程序内的 dlopen() 调用显式加载。
共享档案:一个独特的实体
共享档案是从未使用过的静态库直接通过应用程序。它们充当中介,允许其他静态库链接到它们并将特定的功能或资源合并到它们自己的代码中。共享档案需要特殊的编译标志(-fPIC 和 -export-shared)才能与动态库共享。
更新的附加说明
尽管将共享对象与 DLL 等同起来,提问者所在的公司通俗地使用术语“DLL”来指代共享库。此外,共享档案的“S”名称是公司特定的约定,而不是行业标准。
总之,静态库提供独立的应用程序,而共享对象提供运行时灵活性,而不牺牲代码可访问性。共享档案弥合了静态库和共享库之间的差距,允许跨多个模块共享函数。
以上是C/C 中的静态库、共享对象和 DLL 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!