嵌入式每日八股2.8
动态库和静态库
静态链接动态链接的区别
静态库:
静态库是在程序编译链接时将库文件的代码和数据复制到可执行文件中,因此静态库文件会增加可执行文件的大小。(静态库在文件中静态展开,所以有多少文件就展开多少次,非常吃内存,100M展开100次,就是1G,但是这样的好处就是静态加载的速度快)静态库对于使用它的程序来说是独立的,即使在没有该库文件的情况下,程序也能正常运行。每次更新静态库都需要重新编译和链接程序。
静态库适合于程序的可移植性要求高、不需要经常更新的情况下使用
动态库:
动态库在程序运行时被加载到内存中,因此它不会增加可执行文件的大小。(使用动态库会将动态库加载到内存,10个文件也只需要加载一次,然后这些文件用到库的时候临时去加载,速度慢一些,但是很省内存)程序在运行时可以调用动态库中的函数等内容。动态库可以被多个程序共享,因此可以节约系统资源,但需要确保操作系统中已经安装了动态库文件。每次更新动态库时,只需要替换动态库文件即可。
动态库适合于资源共享、需要经常更新的情况下使用。
-
静态链接是将库的代码完全复制到可执行文件中。而动态链接是只将库的引用复制到可执行文件中,程序运行时才会动态加载库函数。
-
静态链接的程序文件相对比较大,因为它包含了程序所需要的所有代码和库函数。而动态链接的程序文件相对较小,因为它只是包含了库函数的引用。
-
静态链接的程序运行速度要比动态链接的程序快,因为它不需要动态加载库函数,所有代码都已经包含在程序中。而动态链接的程序运行速度要稍慢一些,因为它需要动态加载库函数。
-
静态链接的程序安全性较高,因为它不依赖于外部库文件,不易受到外界的攻击。而动态链接的程序安全性相对较低,因为它依赖于外部库文件,这些库文件可能会受到攻击。
-
静态链接适合编写小型程序,对程序体积和速度要求高的场合;动态链接适合编写大型程序,对程序体积和速度要求不那么高,但对程序的灵活性和可维护性要求比较高的场合。
【嵌入式八股】精华版(免费216问精华八股) https://www.nowcoder.com/creation/manager/columnDetail/0rOeJm
【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM
【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym
【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM
【嵌入式八股】四、嵌入式Linux篇https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0