歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux 的庫文件

1.什麼是庫

在windows平台和linux平台下都存在著大量的庫。

本質上來說庫是一種可執行代碼的二進制形式,可以被操作系統載入內存執行。

由於windows和linux的本質不同,因此二者庫的二進制是不兼容的。

本文僅限於介紹linux下的庫。


2.庫的種類及區別

  • linux庫有分類

靜態庫和共享庫(動態庫)

  • 區別:

後綴不同

通常共享庫以.so(SharedObject的縮寫)結尾,靜態鏈接庫通常以.a結尾(Archive的縮寫)。在終端缺省情況下,共享庫通常為綠色,而靜態庫為黑色。


代碼被載入的時刻不同

靜態庫——編譯時加載

動態庫——語句調運時加載


靜態庫的代碼在編譯過程中已經被載入可執行程序,因此體積較大。

動態庫,程序中只保留庫文件的名字和函數名,在運行時去查找庫文件和函數體並載入內存,程序的體積基本變化不大。


靜態庫的原則是“以空間換時間”,增加程序體積,減少運行時間;

動態庫則是“以時間換空間”,增加運行時間,減少了程序本身的體積。

不同的應用程序如果調用相同的動態庫,那麼在內存裡只需要有一份該動態庫的實例。


3.庫存在的意義

  • 便於管理。

你調用函數的時候,只是一個#include就搞定,操作系統就自己幫你去找你要用的東西,(前提是你的環境變量要正確,或者你的庫在系統默認的地方),而且庫函數是成熟穩定的。


  • 縮短開發周期。

你不用去編寫所用的代碼,你可以用牛人們已經用了千百遍的代碼——標准庫

這也是團隊合作的必要。你有時候只需要了解函數的功能、入口、出口。


  • 有利於升級

如病毒庫的升級,具體的我還得查查資料。哈哈見笑。

Copyright © Linux教程網 All Rights Reserved