glibc的鏈接文件
實際的共享鏈接庫
- 這類文件名的格式爲libLIBRAY_NAME-GLIBC_VERSION.so,其中LIBRAY_NAME爲鏈接庫的名稱,
- GLIBC_VERSION爲使用glibc的套間的版本編號,glibc-2.2.3的數學鏈接庫的名稱爲libm-2.2.3.so
- libm是LIBRAY_NAME,而2.2.3是libm的版本號,glibc-2.2.3的實際的共享鏈接庫是libc-2.2.3.so
主修訂版本的符號鏈接
:主修改版本的符號鏈接於實際的glibc的版本是不同的,以glibc2.2.3的實際的共享鏈接庫爲libc-2.2.3.so
- 而它的主修訂版本的符號鏈接爲6,相對而言,libdl-2.2.3.so的主修訂版本編號爲2
- 主修訂版本的符號鏈接名稱格式:
- libLIBRARY_NAME.so.MAJOR_REVISION_VERSION
- libLIBRARY_NAME是鏈接庫的名字
- MAJOR_REVISION_VERSIO是鏈接庫的主版本的編號
- dubuntu@euwy-laptop:/lib$ ls -l libc.so.6
- lrwxrwxrwx 1 root root 13 2006-03-05 15:38 libc.so.6 -> libc-2.3.6.so
- 主修訂版本的符號鏈接名稱格式:
與版本無關的符號鏈接指向主修訂版本的符號鏈接
- 這些符號鏈接的主要功能,是爲需要鏈接特定鏈接庫的所有程序提供一個通用的條目,於主修訂的版本無關
- 符號的格式:
- libLIBRARY_NAME.so
- 例如:libm.so指向的是libm.so.6,而libm.so.6指向的是libm-2.2.3.so
- $ ls -l libm.so
- lrwxrwxrwx 1 dubuntu users 9 2007-03-24 11:05 libm.so -> libm.so.6
- $ ls -l libm.so.6
- lrwxrwxrwx 1 dubuntu users 13 2007-03-24 11:05 libc.so.6 -> libc-2.3.2.so
- 符號的格式:
靜態鏈接庫包文件
- 選擇以靜態方式鏈接庫的應用程序就會用到這些移植包。
- 靜態鏈接庫包文件格式:
- libLIBRARY_NAME.a
- 例如:靜態包文件libdl.a
- 靜態鏈接庫包文件格式:
而我們在做嵌入移植的時候,只需要移植實際的共享鏈接庫和主修訂版本的符號鏈接就可以,
glibc的鏈接庫組件和根文件系統的引用提示
鏈接庫組件 |
內 容 |
引用提示 |
ld |
動態鏈接器 |
必要 |
libBrokernLocale |
修正進程,讓local特性有問題的應用程序得以正常執行 |
很少用到 |
libSegFault |
用來捕捉內存區段錯誤以及今欣回溯的進程 |
很少用到 |
libanl |
異步名稱查詢進程 |
很少用到 |
libc |
主C鏈接庫進程 |
必要 |
libcrypt |
密碼學進程 |
大多數需要認證程序會用到,如apache |
libdl |
用來動態加載共享目的文件進程 |
使用dlopen()函數的程序會用到 |
libm |
glibc的數學進程 |
數學函數需要用到 |
libmemusage |
用來進行堆(heap)和棧(stack)內存統計的進程 |
很少用到 |
libnsl |
NIS網絡服務鏈接進程 |
很少用到 |
libnss_compat |
這是NIS與Name Switch Service (NSS)兼容的進程 |
由glibc NSS自動加載 |
libnss_dns |
DNS的NSS的進程 |
由glibc NSS自動加載 |
libnss_files |
文件查詢的NSS進程 |
由glibc NSS自動加載 |
libnss_hesiod |
Hesiod名稱服務的NSS進程 |
由glibc NSS自動加載 |
libnss_nis |
NIS的NSS進程 |
由glibc NSS自動加載 |
libnss_nisplus |
NIS的plus的NSS進程 |
由glibc NSS自動加載 |
libpcprofile |
程序記數器統計進程 |
很少用到 |
libpthread |
Linux的Posix 1003.1c多線程 |
多線程需要用到 |
libresolv |
名稱解析器進程 |
名稱解析要用 |
Librt |
異步調試進程 |
很少用到 |
|
|
|
|
|
|