[
編輯]實際的共享鏈結庫
這類檔名的格式為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
[ 編輯]
主修訂版本的符號鏈結
而它的主修訂版本的符號鏈結為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
而我們在做嵌入移植的時候,只需要移植實際的共享鏈結庫和主修訂版本的符號鏈結就可以,
[ 編輯]
鏈結庫元件
內 容引用提示
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
非同步除錯程序
很少用到
gdb 鏈結 庫檔案
可執行檔案分兩種 1.預設的為 release版本,也可以叫發行版本,使用者使用 2.debug版本,也叫開發版本,開發者使用 1.編譯過程中手動加入debug資訊,生成對應 o檔案 例如 gcc c main.c g 2.鏈結不會加入鏈結檔案,對上述的 o檔案進行鏈結,例如 gcc o run m...
動態鏈結庫 靜態鏈結庫
包含標頭檔案和庫 idir 指定編譯查詢標頭檔案的目錄,常用於查詢第三方的庫的標頭檔案,例 gcc test.c i.inc o test。ldir 指定鏈結時查詢lib的目錄,常用於查詢第三方庫。llibrary 指定額外鏈結的lib庫 巨集定義 dmacro 以字串 1 預設值 定義 macro...
靜態鏈結庫 動態鏈結庫
庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib dll ...