日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

發(fā)布時間:2024/7/23 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统之动态库和静态库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是庫?

平時在寫代碼的時候會經(jīng)常添加一些頭文件,添加這些頭文件其實是讓編譯器從一個目錄下去尋找這個文件,這個目錄就是我們常說的庫。在Linux中庫一般存放在user/lib目錄。庫就是將一些常用的函數(shù)的目標(biāo)文件打包在一起,提供相應(yīng)的函數(shù)接口,以便于使用。

什么是靜態(tài)庫?

靜態(tài)庫就是在編譯連接的時候,將庫中的代碼連接直接復(fù)制到可執(zhí)行文件中,這樣程序在運行的時候就不用去連接動態(tài)庫了。靜態(tài)庫的這個連接過程就是靜態(tài)鏈接。

什么是動態(tài)庫?

動態(tài)庫就是程序在運行的時候才去連接動態(tài)庫的代碼,可以多個程序共享動態(tài)庫中的代碼,這個動態(tài)庫的連接過程就是動態(tài)鏈接,也就是在執(zhí)行文件開始之前將外部函數(shù)的機器碼有系統(tǒng)從磁盤上對應(yīng)的動態(tài)庫中向內(nèi)存復(fù)制一份。

靜態(tài)庫和動態(tài)庫的區(qū)別?

1、動態(tài)庫是在運行時有系統(tǒng)調(diào)用庫函數(shù)實現(xiàn)鏈接,代碼較小巧。而靜態(tài)庫是在鏈接是復(fù)制到代碼中,代碼量比較龐大,冗余度高。
2、由于靜態(tài)庫是通過復(fù)制的方式,所以他在編譯連接之后就不再需要靜態(tài)庫,代碼的可以執(zhí)行強,但是動態(tài)庫由于是利用本地的庫函數(shù),如果將代碼移植到其他電腦會出現(xiàn)運行bug等,可移植性差。
3、動態(tài)庫必須放在指定的目錄下完成連接,但是靜態(tài)庫只需要給出鏈接文件的路徑就可以。
4、他們的相同點就是在庫文件中不能出現(xiàn)main函數(shù),庫都是用來提供函數(shù)接口的,不暴露源代碼,所有的庫的目的都是為了增加代碼的復(fù)用,可共享性,減小冗余。
5、在windows中靜態(tài)庫是后綴是.lib,動態(tài)庫是.dll,在Linux中靜態(tài)庫是.a,動態(tài)庫是so。
6、使用ar創(chuàng)建靜態(tài)庫

總結(jié)

以上是生活随笔為你收集整理的操作系统之动态库和静态库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。