动态链接库和静态链接库有什么区别?

动态链接库和静态链接库有什么区别?#C++工程师#
全部评论
静态库里的代码在编译期就会嵌入可执行文件。动态库在程序运行时,动态加载到内存,或者按照需要,随时被加载到内存。
3 回复 分享
发布于 2016-06-25 13:43
动态库连接时,会在运行时选择需要的部分进行编译,生成的可执行文件会比较小,而且容易后续的更新。静态编译会把所有的函数等都嵌入到可执行文件中,可以直接在任何电脑上直接运行,同样文件会远远大于动态链接的。
点赞 回复 分享
发布于 2016-06-27 17:40
静态链接后的目标程序,执行时不再需要原库文件,这是与动态链接库的最大区别
点赞 回复 分享
发布于 2016-06-25 17:40
http://blog.csdn.net/always__/article/details/51451890 这是我写的一篇博客你可以去看看,希望对你有帮助!
点赞 回复 分享
发布于 2016-06-28 10:08
1.名字不一样,并且生成方式不一样,静态库是ar -rc,动态库是gcc -fpic -shared生成 2.编译运行的阶段不一样,静态库在编译是链接,动态库运行时链接(这里我不是很清楚) 3.方便性有差异,静态库的升级会导致程序整个需要重新编译浪费了时间,动态库的升级则不用重新编译整个程序 4.存放位置不一样,静态库在编译时直接和程序一起编译,但是动态库是放在内存堆和栈之间的区域 5.对于多次使用的函数,动态库会节省空间
点赞 回复 分享
发布于 2016-06-28 11:58
加载方式上: 1.静态库只能使用静态加载方式,静态加载就是编译、链接的时候把静态库代码拷贝到你的程序中。 2.动态库可以使用“静态加载”和“动态加载”,静态加载就是在程序启动的时候把库所有的内容加载到内存,动态加载就是用到哪个函数所在的模块就加载对应的库就行。(这是因为,动态库可能也很大,一口气全部加载也是非常耗时,所以运行时用到谁就加载谁,就是动态加载)。 属性上: 静态库是把库中的二进制代码拷贝到你的程序中,build之后就不需要静态库了。 动态库不论“静态加载”还是“动态加载”都需要动态库,
点赞 回复 分享
发布于 2016-07-09 13:46
exe dll的区别?
点赞 回复 分享
发布于 2016-06-25 14:46

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务