linux下静态库以及动态库的使用过程

在linux下经常会将一些.o文件打包成一个库,分为静态库和动态库。

静态库主要是任何一个程序需要这个库, 就会将这个静态库的内容拷贝一份到程序中,进行执行。

但是这样会出现一个问题, 当很多程序都要用这一个库的时候, 这个库就会被拷贝多份,然后造成代码冗余,占用内存空间, 这时就出现了动态库, 动态库只在系统中保存一份,哪一个程序使用它就去拿一份,不进行拷贝,这样大大节省了内存空间消耗。

举一个例子进行说明:

首先先编写四个.c 和四个.h文件,分别是add.c  sub.c  mul.c div.c 和 add.h   sub.h   mul.h  div.h。进行测试:

  1 #include "add.h"
  2 
  3 int add(int a, int b)
  4 {
  5     return a+b;
  6 }
   
  3 #ifndef __ADD_H__
  4 #define __ADD_H__
  5 
  6 int add(int a,int b);
  7 
  8 
  9 #endif //__ADD_H__

其他三个文件和add文件类似。

1,首先创建静态库:


通过命令:

ar -rc libmyku.a add.o sub.o mul.o div.o  创建静态库, 静态库库名为myku,静态库文件名为:libmhyku

通过错名:

ar -tv libmyku  可以查看静态库myku的内容

然后进行使用,如下图:


2,创建动态库以及使用

通过 gcc -fPIC -c sub.c add.c mul.c div.c 和 gcc -shared -o libmuky.so *.o

两句命令,创建了一个libmyku.so的动态库

使用动态库有两种方式:

(1)将动态库拷贝到/usr/lib目录下, 编译时直接 gcc main.c -lmyku即可

结果如图所示:

(2)将环境变量修改, export LD_LIBRARY_PATH = .

将当前目录添加到环境变量LD_LIBRARY_PATH中,再修改配置文件 /etc/ld.so.conf.d/XX.conf即可


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值