除了libc和libm庫,UNIX系統庫沒有其他標準的命名規範。Linux上的一些系統庫可能和UNIX平台上庫的名稱不同,這就需要知道Linux上各庫所包含和支援的功能。表3-2根據所支援的功能列舉了一些Linux系統庫。
下面列出了GNU libc庫所包含的庫檔案以及對應的描述(注釋5):
- ld.so,為使用了共用庫的可執行程式提供的一個輔助程式;
- libBrokenLocal.[a,so],Mozilla等應用程式用以解決被破壞的locale的庫檔案;
- libSegFault.so,段錯誤訊號處理器,它試圖捕獲段錯誤訊號。
- libanl.[a,so],非同步名稱查詢庫。
- libbsd-compat.a,在Linux上運行BSD程式時需要的庫。
- libc.[a,so],最主要的C庫(常用的C函數的集合)。
- libcrypt.[a,so],加密庫。
- libdl.[a,so],動態連結介面庫。
- libg.a,g++執行階段程式庫。
- libieee.a,IEEE浮點運算庫。
- libm.[a,so],數學庫。
- libmcheck.a,包含啟動時啟動並執行代碼。
- libmemusage.so,memusage用來收集應用程式記憶體使用量情況的庫。
- libnsl.a,網路服務庫。
- libnss_comkpat.so,libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so,NSS(Name Service Switch)庫,包含解析主機名稱、使用者名稱、組名、別名、服務、協議等的函數。
- libpcprofile.so,包含一些跟蹤統計程式碼消耗CPU時間的概要分析(profiling)函數。
- libpthread.[a,so],POSIX線程庫。
- libresolv.[a,so],包含為網路網域名稱伺服器建立、發送、解釋網路包的函數。
- librpcsvc.a,包含提供各種RPC服務的函數。
- librt.[a,so],包含POSIX1.b即時擴充所定義的大部分介面函數。
- libthread_db.so,包含開發多線程程式調試器的函數。
- libutil.[a,so],包含常用的UNIX工具使用的“標準”函數。
上面這些庫大多位於/usr/lib目錄,也有一些在/lib目錄下,例如libSegFault.so.
3.1.1 glibc遵循的標準
GNU glibc發布了一個描述其所遵循的標準的報告(注釋6)。該報告同時也列出了GNU libc需要改進的地方。寫作本書時,該報告顯示GNU libc通過了FIPS POSIX90、POSIX96、UNIX98、ANSI、C89/99,和ISO9899標準的標頭檔一致性檢查。所有主要Linux發行版的glibc也都遵循LSB規範。