- 函數庫
程序開發中,將一些具有一定功能、且經常被調用的函數編譯成函數庫。函數庫可以使得程序的開發簡單、方便。函數庫分爲靜態和動態。之間也存在一定的區別。
- 靜態函數庫
這類函數庫以擴展名.a結束。這類函數庫通常爲libxxx.a類型。他們是在編譯的時候直接整合到執行程序當中,所以在程序中只要用到這類庫的時候,都會存在一份庫函數。這類函數庫的最大優點是當編譯成可執行文件以後,不再需要讀取外部的函數庫的內容了。
但是,當要對庫函數進行升級了。整個程序必須重新編譯。
- 動態鏈接庫
擴展名通常爲libxxx.so的類型。動態鏈接庫並沒有把代碼整合到程序當中。而是通過程序當中的指針來指向函數庫來實現的。所以它的程序也相應的能小些。但是,這類型的函數庫編譯出來的程序是不能獨立執行的。函數庫的目錄也是不能改變的。但是也正是由於它的獨立性,如果庫函數發生改變的話,只需要對庫函數進行獨立編譯。
動態鏈接庫是被放在硬盤上的,當程序運行時,需要調用動態鏈接庫時。但是硬盤的訪問速度有限,影響程序的開啓速度。此時,可以將動態鏈接庫從硬盤先讀到內存當中(cache),調用速度也就提高了。
將動態鏈接庫加載到高速緩存中:
- 在/etc/ld.so.conf 中加入函數庫的目錄
- ldconfig 執行/etc/ld.so.conf中的資料到cache中
- 同時將數據也記錄一份到/etc/ld.so.cache