Linux 系統中存在大量的函數庫。簡單來講,函數庫就是一些函數的集合,每個函數都具有獨立的功能且能被外界呼叫。
我們在編寫程式碼時,有些功能根本不需要自己實現,直接呼叫函數庫中的函數即可。
需要注意的是,函數庫中的函數並不是以原始碼的形式存在的,而是經過編譯後生成的二進位制檔案,這些檔案無法獨立執行,只有連結到我們編寫的程式中才可以執行。
Linux 系統中的函數庫分為 2 種,分別是
靜態函數庫(簡稱
靜態庫)和
動態函數庫(也稱為
共用函數庫,簡稱
動態庫或
共用庫),兩者的主要區別在於,程式呼叫函數時,將函數整合到程式中的時機不同:
-
靜態函數庫在程式編譯時就會整合到程式中,換句話說,程式執行前函數庫就已經被載入。這樣做的好處是程式執行時不再需要呼叫外部函數庫,可直接執行;缺點也很明顯,所有內容都整合到程式中,編譯檔案會比較大,且一旦靜態函數庫改變,程式就需要重新編譯。
-
動態函數庫在程式執行時才被載入(如圖 1 所示),程式中只儲存對函數庫的指向(程式編譯僅對其做簡單的參照)。
圖 1 函數庫呼叫