文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>静、动态库

静、动态库

时间:2009-06-11  来源:djstava

   Linux下类库主要有静态库和动态库两种库。其中,静态库在程序连接的时候会自动的连接到程序里,所以一但编译完成,静态库也就不需要了。静态库通常以.a结尾。而动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。通常以.so结尾。因此,静态库相对于共享库来说有更高的效率但是也要消耗更多的空间。值得注意的是,如果既有静态库又有动态库,在编译时默认的使用动态库。

1、制作静、动态库:

         b.c

              #include <stdio.h>

              int test()

               {

                    printf("This is first to use static lib!\n");
 

                }

                 静态库:
 

                         gcc -c b.c产生b.o

                         ar -r libb.a b.o产生libb.a静态库

                 动态库:

                        gcc -c -fpic b.c
                        gcc -shared b.o -o libb.so
 

    2、调用静、动态库:

           c.c

            #include <stdio.h>

            int main(int argc,char** argv)

           {

               printf("Call static/dynamic lib:");

               test();
             

               return 0;

            }
 

              静态库:

                    gcc -o c.static c.c libb.a(c.static为可执行文件名)
 

              动态库:
 
                     gcc -o a c.c ./libb.so

run it:
./a
Call static/dynamic lib:This is first to use static lib!

djstava@djstava:~/execise/lsp$ ldd a
        linux-gate.so.1 =>  (0xb7ff6000)
        ./libb.so (0xb7ff1000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e7c000)
        /lib/ld-linux.so.2 (0xb7ff7000)
相关阅读 更多 +
排行榜 更多 +
进击小巨人最新版

进击小巨人最新版

冒险解谜 下载
吞就完了手机版

吞就完了手机版

冒险解谜 下载
坦克玩具城

坦克玩具城

冒险解谜 下载