静态库与动态库

5人阅读 评论(0) 收藏 举报
分类:

1.什么是库:

通俗的说,库就是把常用函数的目标文件打包在一起,提供相应函数的接口,便于程序员使用,这样就大大提高了程序员编写代码的效率。

库大体上可以分为两类:静态库和动态库(共享库)。在windows中静态库是以 .lib 为后缀的文件,共享库是以 .dll 为后缀的文件。在linux中静态库是以 .a 为后缀的文件,共享库是以 .so为后缀的文件。

2.案例:main.c文件中调用了add.c,sub.c,add.csub.c分别有自己的头文件add.hsub.h;根据这个案例,分别练习使用静态库与动态库。

3..静态库的使用:

第一步:将目标文件打包。ar -rc libxxx.a test1.o test2.o (xxx为自定义的库名,libxxx.a为库文件名)

第二步:编译。gcc main.c libxxx.a  链接。./a.out

第二步另一种方法,编译。gcc main.c -L .-lxxx   链接。./a.out

4..动态库的使用:

第一步:生成动态库。 gcc -fPIC -shared -o libxxx.so test1.o test2.o(或者test1.c test2.c)

第二步:编译。gcc main.c -L . -lxxx  

第三步:配置。 vim /etc/ld.so.conf/xx.conf(xx自定义配置文件名),打开之,在里面添加第一步之后生成libxxx.so文件的路径

第四步:运行。 ./a.out

5..二者区别:

静态库在程序编译时会被连接到可重定位的目标代码中,再一起被连接器生成可执行文件,程序运行时将不再需要该静态库。

动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入内存,因此在程序运行时还需要动态库存在。

 

查看评论

C++静态库与动态库的区别?

C++静态库与动态库 这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐...
  • sinat_20265495
  • sinat_20265495
  • 2016-09-11 10:37:04
  • 4387

Linux 静态库转换为动态库

将.a文件转为.so文件。 .a files are just archives of .o object files, so all you need to do is unpack the a...
  • yuanbinquan
  • yuanbinquan
  • 2015-05-06 15:05:49
  • 2174

依赖静态库,编译生成动态库

如需转载请注明出处! 直入主题,目标是依赖静态库,编译动态库,最终生成二进制文件。 文件目录如下: 文件内容组织: add.c #include "add.h" int add(int ...
  • qiumingjian
  • qiumingjian
  • 2017-03-09 18:50:34
  • 1754

VC2010动态库转换为静态库

我有一个生成动态库的程序,生成的Lib和dll可以被测试程序引用。但是因为工作需要,需要将改程序改为生成一个静态库lib。我将程序中的 项目属性-》配置属性-》常规》配置类型改为静态库(.lib) 程...
  • xiaohuaibao
  • xiaohuaibao
  • 2016-08-12 17:24:50
  • 360

静态库与动态库的区别与优缺点

静态链接文件     目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Li...
  • fhb1922702569
  • fhb1922702569
  • 2016-12-12 17:15:01
  • 1771

LINUX下动态库调用静态库的方法

LINUX下动态库调用静态库的方法 有这样一种情形,在创建一个动态库的同时,可能会调用一个静态库,这个静态库可能是你自己写的,也可能是第三方的。比如有下面五个文件,生成一个静态库,一个动态库,一个执...
  • liu5320102
  • liu5320102
  • 2016-03-18 14:04:55
  • 2429

为什么动态库不能被其他动态或静态库包含

如果静态库包含了动态库,则动态库失去了它的意思。因为动态库是在运行时调用的,如果包含在静态库里,意味着在编译时把动态库编译进去了。 gcc不会做这么荒唐的事!!! 如果动态库包含了动态库,这也没必要,...
  • u013654125
  • u013654125
  • 2017-03-29 15:24:02
  • 600

Linux静态库和动态库学习总结

  • 2013年07月13日 19:50
  • 649KB
  • 下载

动态库与静态库优缺点比较

动态库与静态库优缺点比较 (2012-10-18 15:31)      我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作...
  • sunshinewave
  • sunshinewave
  • 2014-09-09 14:26:07
  • 37899

静态库与动态库相互调用

测试场景,Test,lib1,lib2,dll1,dll2,分为下面四种情况: 1、Test->lib1->lib2 lib1编译自己的代码,对lib2的部分,只需要lib2的头文件,对lib2的...
  • lien0906
  • lien0906
  • 2017-02-09 17:51:30
  • 424
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 843
    排名: 6万+