静态库基础

来源:互联网 发布:淘宝上的祛痘产品 编辑:程序博客网 时间:2024/05/17 03:33
静态库的使用
静态库的操作工具:gcc和ar 命令。 


编写及使用静态库 


(1)设计库源码 pr1.c 和 pr2.c 


[root@billstone make_lib]# cat pr1.c 


void print1() 





                printf("This is the first lib src!\n"); 





[root@billstone make_lib]# cat pr2.c 


void print2() 





                printf("This is the second src lib!\n"); 





       (2)  编译.c 文件 


[bill@billstone make_lib]$ cc -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. 


[bill@billstone make_lib]$ ar -rsv libpr.a pr1.o pr2.o 


a - pr1.o 


a - pr2.o 


[bill@billstone make_lib]$ ls -l *.a 


-rw-rw-r--        1 bill          bill                  1822    4 月  15 11:12 libpr.a 


[bill@billstone make_lib]$ ar -t libpr.a 


pr1.o 


pr2.o 


(4)  调用库函数代码 main.c 


[bill@billstone make_lib]$ cat main.c 


int main() 





                print1(); 


                print2(); 


                return 0; 





(5)  编译链接选项 


    -L 及-l 参数放在后面.其中,-L 加载库文件路径,-l 指明库文件名字. 


[bill@billstone make_lib]$ gcc -o main main.c -L./ -lpr 


[bill@billstone make_lib]$ ls -l main* 


-rwxrwxr-x        1 bill          bill                11805    4 月  15 11:17 main 


-rw-rw-r--        1 bill          bill                      50    4 月  15 11:15 main.c 


(6)执行目标程序 


[bill@billstone make_lib]$ ./main 


This is the first lib src! 


This is the second src lib! 


[bill@billstone make_lib]$ 
0 0