LINUX第5课总结

来源:互联网 发布:cssrs是什么软件 编辑:程序博客网 时间:2024/06/06 19:41

静态库与动态库的区别

静态库的使用需要: 包含一个对应的头文件告知编译器lib文件里面的具体内容 ,设置lib文件允许编译器去查找已经编译好的二进制代码。 
动态库的使用: 程序运行时需要加载动态库,对动态库有依赖性,需要手动加入动态库。 
区别: 
简单讲,静态库就是直接将需要的代码连接进可执行程序;动态库就是在需要调用其中的函数时,根据函数映射表找到该函数然后调入堆栈执行。 
做成静态库可执行文件本身比较大,但不必附带动态库 
做成动态库可执行文件本身比较小,但需要附带动态库 
链接静态库,编译的可执行文件比较大,当然可以用strip命令精简一下(如:strip libtest.a),但还是要比链接动态库的可执行文件大。程序运行时间速度稍微快一点。
静态库是程序运行的时候已经调入内存,不管有没有调用,都会在内存里头。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。
其在编译程序时若链接,程序运行时会在系统指定的路径下搜索,然后导入内存,程序一般执行时间稍微长一点,但编译的可执行文件比较小;动态库是程序运行的时候需要调用的时候才装入内存,不需要的时候是不会装入内存的。
动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。


0 0
原创粉丝点击