网络交换机和路由器什么区别 linux动态库和静态库的区别?
linux动态库和静态库的区别?
通常编译动态链接库和静态链接库来集成一系列接口(函数)
程序源代码编译后,它是由编译器编译并通过链接器链接到这些库中的
动态链接库和静态链接库的区别是链接器链接时静态链接库会直接编译到程序中
但是动态链接库不会被编译,这些链接库称为依赖关系(动态库和静态库)
程序的运行需要这些依赖关系。程序静态链接后,程序本身已包含此依赖项
但动态链接的程序本身不包含此依赖项。这些依赖项需要执行器将它们安装到操作系统中(动态库和运行时库)
这些库将在程序运行时动态加载
Linux动态库的一般后缀为。所以
静态库的一般后缀是。A
因为静态链接会直接将库编译到程序中,静态编译的程序比动态链接的程序大
这是因为静态链接会将链接库编译到程序中,所以占用的空间会更大
因此,如果有静态链接库,静态库不易维护和更新实现中的bug,整个程序需要更新,因为静态库被编译到程序中
而动态库没有这种情况,因为动态库是在程序运行时动态加载的,所以我们只需要更新动态库,而不需要更新所有依赖该库的程序(软件)
]另一方面,许多程序开发都会使用相同的方法链接库,也就是说,许多程序(软件)将具有相同的依赖关系
如果所有这些依赖关系都是静态编译的,它会造成存储资源的过度消耗和资源的浪费
并且通过使用动态库,这些程序(软件)可以共享一个链接库,而每个程序都没有链接库,这大大减少了存储资源的消耗空间
静态库,。A和。框架动态库,。Dylib和。框架静态库:当链接时,静态库将被完全复制到可执行文件并多次使用。旧的多个冗余副本的动态库:链接时,它将不会被复制。当程序运行时,系统会将其动态加载到内存中,以便程序调用。系统只加载一次,多个程序共享,需要注意的是,如果在项目中使用自制的动态库,无法上载到Appstore模拟器的体系结构是x86A CD/users/Lili/library/Developer/Xcode/deriveddata/staticdemo gqjyc/build/products/libdev模拟器的Lib文件夹所在的目录可以通过Lipo-info静态库文件地址来支持哪个平台Lipo-info 静态演示.ais弧体系结构:x86uarmv7、arm64(5S)和armv7s(iphone5c)被合并到一个静态库Lipo-createlibdev/staticdemo中。libpro/staticdemo。A-输出HMTool.alipo文件-创建要合并的静态库1要合并的静态库2合并后输出文件夹名称注:在合并了真实机器和模拟器的静态库之后,我们将不关心将来是在模拟器中运行还是在真实机器中运行,但是如果我们仍然建议使用静态库真正的机器程序发布时
静态库加载到源代码进行编译时编写,如各种头文件。
动态库被映射到程序的内存空间,以便在程序运行时进行动态加载,例如DLL文件。
网络交换机和路由器什么区别 linux linux静态库和动态库的区别
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。