linux动态库和静态库的区别?
通常编译动态链接库和静态链接库来集成一系列接口(函数)
程序源代码编译后,它是由编译器编译并通过链接器链接到这些库中的
动态链接库和静态链接库的区别是链接器链接时静态链接库会直接编译到程序中
但是动态链接库不会被编译,这些链接库称为依赖关系(动态库和静态库)
程序的运行需要这些依赖关系。程序静态链接后,程序本身已包含此依赖项
但动态链接的程序本身不包含此依赖项。这些依赖项需要执行器将它们安装到操作系统中(动态库和运行时库)
这些库将在程序运行时动态加载
linux动态库的一般后缀为。所以
静态库的一般后缀是。a
因为静态链接会直接将库编译到程序中,静态编译的程序比动态链接的程序大
这是因为静态链接会将链接库编译到程序中,所以占用的空间会更大
因此,如果有静态链接库,静态库不易维护和更新实现中的bug,整个程序需要更新,因为静态库被编译到程序中
而动态库没有这种情况,因为动态库是在程序运行时动态加载的,所以我们只需要更新动态库,而不需要更新所有依赖该库的程序(软件)
]另一方面,许多程序开发都会使用相同的方法链接库,也就是说,许多程序(软件)将具有相同的依赖关系
如果所有这些依赖关系都是静态编译的,它会导致存储资源的过度消耗和资源的浪费
通过使用动态库,这些程序(软件)可以共享一个链接库,而每个程序都没有链接库,这大大减少了存储资源的消耗空间
创建和使用静态库第1步:编辑源文件,测试.htest.cmainc.主要的。c文件包含的主要功能为程序入口;测试。c包含main函数中所需的函数。vitest.htest.cmain公司.c步骤2:编译测试。c转换到目标文件中。gcc测试。cif试验。c是正确的,您将得到目标文件测试。第三步:创建静态库。o文件。arrcslibtest.atest测试.o步骤4:在程序中使用静态库。由于gcc-omainmain.c-l.-ltest是静态编译的,因此生成的可执行文件可以独立于。一个文件。第五步:实施。第一步是编辑源文件,测试.htest.cmainc.主要的。c文件包含的主要功能为程序入口;测试。c包含main函数中所需的函数。vitest.htest.cmain公司.c步骤2:编译测试。c转换到目标文件中。gcc测试的前两步。c与创建静态库是一致的。步骤3:从创建动态库文件。o文件。gcc共享fpic-olibtest.sotest公司.o步骤4:使用程序中的动态库。gcc-omainmain.c-l.-ltest当静态库与动态库同名时,gcc命令优先于动态库。第五步:实施。ld库路径=。/main示例5查看静态库中的文件[根@node56lib]#银币-tlibhycu.abase64号.c.obinbuf.c.ocache.c.ochunk.c.ocodec公司
原文标题:cmake指定编译器 linux动态库和静态库的区别?,如若转载,请注明出处:https://www.saibowen.com/news/21179.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。