靜態庫
文件名:lib.c
先編譯成目標文件 gcc -o mylib.o -c lib.c
然後創建靜態庫,將mylib.o放到libmylib.a中 ar rcs libmylib.a mylib.o
ar”可直接將需要增加的.o文件簡單的追加到靜態庫的末尾。ar命令中,"c"關鍵字告訴ar需要創建一個新庫文件,"u"用來告訴ar如果a.o比庫中的同名成員要新(這個參數可以省略),則用新的a.o替換原來的,"r"將文件插入備存文件中,上例中將mylib.o文件加入libmylib.a中。
最後:ranlib libmylib.a 其中“ranlib”來對靜態庫的符號索引表進行更新,"ar"之後將編譯完成的.o文件直接加入到了庫的末尾,卻並沒有更新庫的有效符號表。連接程序進行連接時,在靜態庫的符號索引表中無法定位剛纔加入的.o文件中定義的函數或者變量。這就需要在完成庫成員追加以後讓加入的所有.o文件中定義的函數(變量)有效,完成這個工作需要使用另外一個工具“ranlib”來對靜態庫的符號索引表進行更新。