操作系统之动态库和静态库

什么是库?

平时在写代码的时候会经常添加一些头文件,添加这些头文件其实是让编译器从一个目录下去寻找这个文件,这个目录就是我们常说的库。在Linux中库一般存放在user/lib目录。库就是将一些常用的函数的目标文件打包在一起,提供相应的函数接口,以便于使用。

什么是静态库?

静态库就是在编译连接的时候,将库中的代码连接直接复制到可执行文件中,这样程序在运行的时候就不用去连接动态库了。静态库的这个连接过程就是静态链接。

什么是动态库?

动态库就是程序在运行的时候才去连接动态库的代码,可以多个程序共享动态库中的代码,这个动态库的连接过程就是动态链接,也就是在执行文件开始之前将外部函数的机器码有系统从磁盘上对应的动态库中向内存复制一份。

静态库和动态库的区别?

1、动态库是在运行时有系统调用库函数实现链接,代码较小巧。而静态库是在链接是复制到代码中,代码量比较庞大,冗余度高。
2、由于静态库是通过复制的方式,所以他在编译连接之后就不再需要静态库,代码的可以执行强,但是动态库由于是利用本地的库函数,如果将代码移植到其他电脑会出现运行bug等,可移植性差。
3、动态库必须放在指定的目录下完成连接,但是静态库只需要给出链接文件的路径就可以。
4、他们的相同点就是在库文件中不能出现main函数,库都是用来提供函数接口的,不暴露源代码,所有的库的目的都是为了增加代码的复用,可共享性,减小冗余。
5、在windows中静态库是后缀是.lib,动态库是.dll,在Linux中静态库是.a,动态库是so。
6、使用ar创建静态库

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章