[bill@billstone make_lib]$ gcc -O -c pr1.c pr2.c [bill@billstone make_lib]$ ls -l pr*.o -rw-rw-r-- 1 bill bill 804 4 月 15 11:11 pr1.o -rw-rw-r-- 1 bill bill 804 4 月 15 11:11 pr2.o
(3) 鏈接靜態庫 為了在編譯程序中正確找到庫文件,靜態庫必須按照 lib[name].a 的規則命名,如下例中[name]=pr. ar參數意義: r:在庫中插入模塊(替換)。當插入的模塊名已經在庫中存在,則替換同名的模塊。 s:寫入一個目標文件索引到庫中,或者更新一個存在的目標文件索引。 v:該選項用來顯示執行操作選項的附加信息。 t:顯示庫的模塊表清單。一般只顯示模塊名。 [bill@billstone make_lib]$ ar -rsv libpr.a pr1.o pr2.o a - pr1.o a - pr2.o [bill@billstone make_lib]$ ar -t libpr.a pr1.o pr2.o (4) 編譯鏈接選項 -L 及-l 參數放在后面.其中,-L 加載庫文件路徑,-l 指明庫文件名字. [bill@billstone make_lib]$ gcc -o main main.c -L./ -lpr //生成main (5)執行目標程序 [bill@billstone make_lib]$ ./main This is the first lib src! This is the second src lib!
[bill@billstone make_lib]$ cat main.c int main() { print(); return 0; } [bill@billstone make_lib]$ gcc -o main main.c ./xxx.so [bill@billstone make_lib]$ ./main 0x97b5d4:2 this is the first lib src!