Linux 静态库与共享库

来源:互联网 发布:c语言判断数字大小 编辑:程序博客网 时间:2024/06/10 19:56

库文件中存放的是预先编译好的一组函数。 程序在应用这些函数时不需要编译,直接引用函数所在库文件。 

库文件分为静态库与共享库。

静态库: 

           1.   使用

                  gcc  -o hello hello.c /usr/lib/libh.a 

            2.   创建

                   将函数hehe() heihei()  制作成共享库。

                   首先 , 编译两个函数所在文件生成 .o 文件  gcc  -c hehe.c              gcc -c heihei.c 

                                 生成 hehe.o  heihei.o 

                   其次, 创建库文件libh.a  ,并将目标文件添加进去

                                 ar   crv libh.a hehe.o heihei.o 

                    最后, 为函数库生产内容表(某些系统不需要此步骤)

                                  ranlib  libh.a 

                    可以使用了   gcc  -o hello hello.c /usr/lib/libh.a 


共享库: 

           静态库的缺点是当同时运行的程序都是用来自同一函数库的函数时, 内存中会为同一个函数创建多个副本, 而且在程序文件中也会有多份副本。这将消耗大量资源。 

当使用共享库时, 连接方式是: 程序本身不再包含函数代码,而是在引用运行时可访问的共享代码。 当编译好的程序在内存中执行时, 函数引用被解析并产生对共享库的调用,如果有必要,共享库才被加载到内存中。 

           共享库后缀名   .so.N           N 代表版本号       例如   aaa.so.7      版本号为7

原创粉丝点击