静态库与动态库

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..二者区别:

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

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值