1,庫的命名和編號約定:
庫名都以lib開頭
庫文件名都.a(代表存檔,archive)為靜態庫,以.so結尾的庫為動態庫.
編號約定 library_name.major_num.minor_num.patch_num.分別為“庫名.主版本
號.次版本號.補丁級別號".
2,nm命令:
命令nm列出編入目標文件或二進位文件的所有的符號.可以查看程序調用什麼函
數,也可以查看給定的庫或目標文件是否提供了所需的函數.
nm [options] file
關於參數和更詳細介紹可以參看man手冊.
3,ar命令:
用來操作高度結構化的存檔文件.可以用來創建靜態庫,創建,維護符號名的交
叉索引表.
ar [dumqrtx] [member] archive files...
4,ldd命令
ldd [options] file
ldd輸出file所要求的共享庫的名字.
5,ldcofig
ldconfig [options] [libs]
決定位於目錄/usr/lib和/lib下共享庫所需的運行的鏈接,這些鏈接在命令行上
的libs指定並被保存在/etc/ld.so.conf中.命令ldconfig和動態鏈接/裝載工具
ld.so協同工作,一起來創建和維護對最新版本共享庫的鏈接.
6,動態鏈接器/載入器ld.so使用兩個環境變數:
$LD_LIBRARY_PATH,一個由冒號分隔的目錄清單,在這些目錄下搜索運行時的共享
庫.
$LD_PRELOAD ,一個由空格分隔的,附加的,用戶指定的共享庫,在其它所有庫加
載之前載入.
還有,除了標準目錄/usr/lib和/lib以外,清單/etc/ld.so.conf中列出了鏈
接/載入器搜索共享庫時要查看的目錄.
7,編寫使用靜態庫
1》把代碼編譯為目標文件形式:
$ gcc -c libxxx.c -o libxxx.o
2》用工具ar創建一個存檔文件
$ ar rcs libxx.a libxxx.o
使用時注意-static項
本文出自 「WIK」 博客,請務必保留此出處http://noyear.blog.51cto.com/819034/399274
[火星人 ] linux庫基礎(靜態,動態)已經有517次圍觀