|
動態(tài)庫:libXXXX.so shared object
靜態(tài)庫:linXXXX.a archive
靜態(tài)庫在鏈接為可執(zhí)行文件時就將靜態(tài)庫包含到可執(zhí)行文件中了,所以可執(zhí)行文件大,但不依賴所調(diào)用的靜態(tài)庫文件了,但是如果靜態(tài)庫文件變動了就要重新鏈接。
在linux中靜態(tài)庫由ar命令生成,在windows或dos中,由lib命令生成。
在linux系統(tǒng)中可用的庫都存放在/usr/lib和/lib目錄中。庫文件名由前綴lib和庫名以及后綴組成。根據(jù)庫的類型不同,后綴名也不一樣。
共享庫的后綴名由.so和版本號組成,靜態(tài)庫的后綴名為.a。
靜態(tài)庫的名字一般為libxxxx.a,其中xxxx是該lib的名稱
動態(tài)庫的名字一般為libxxxx.so.major.minor,xxxx是該lib的名稱,major是主版本號,minor是副版本號
動態(tài)庫在鏈接為可執(zhí)行文件時在可執(zhí)行文件中只是包含了所調(diào)用庫的名字和函數(shù)等的信息,需要在運(yùn)行時有操作系統(tǒng)幫助實(shí)現(xiàn)具體的解析和調(diào)用,當(dāng)然這是隱含式的調(diào)用動態(tài)庫中的函數(shù),也可以顯式調(diào)用,就像windows中的loadlibrary和getprocessaddress以及l(fā)inux中的dlopen和dlsym。
在linux中動態(tài)庫由gcc編譯器生成,在windows中由編譯器生成。
技術(shù)交流可以加黃工QQ2685896890 |
|