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