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

标签: linux 静态库 动态库
4人阅读 评论(0) 收藏 举报
分类:

在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即可


查看评论

《C语言/C++学习指南》动态库和静态库

介绍动态库和静态库的基本概念,制作和使用方法,手工加载动态库方法,如何导出函数和类,以及VC的静态编译等等
  • 2015年07月15日 15:57

Linux下Gcc生成和使用静态库和动态库详解

  • 2013年01月07日 18:00
  • 249KB
  • 下载

linux下用gcc生成静态库和动态库.doc

  • 2009年11月14日 16:27
  • 40KB
  • 下载

Linux静态库和动态库区别及实例

库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。  静态库和动态库的区别 1. 静态函数库     这类库的名字一般是libxxx.a;利用静态函数库编...
  • suiyuan19840208
  • suiyuan19840208
  • 2013-07-14 14:31:42
  • 1997

在Linux中静态库.a和动态库.so 的创建和使用

 我们通常把一些公用函数制作成函数库,供其它程序使用。 函数库分为静态库和动态库两种。   1. 静态函数库       这类库的名字一般是libxxx.a;利用静态函数库编译成的文件...
  • xiliang_pan
  • xiliang_pan
  • 2016-03-16 11:50:49
  • 2507

linux下g++编译与使用静态库和动态库

  • 2015年07月28日 16:41
  • 56KB
  • 下载

linux windows静态库和动态库的区别

注意:Linux 静态编译时将动态库也编入文件中。 文件预览 文件目录树如下,如你所见,非常简单。    1. libtest/    2. |-- lt.c    3. |-- l...
  • jiayanhui2877
  • jiayanhui2877
  • 2012-01-17 16:45:04
  • 3632

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

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

linux下生成静态库和动态库

linux下生成静态库和动态库 一、动态库、静态库简介 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质...
  • Ddreaming
  • Ddreaming
  • 2016-11-09 22:25:46
  • 2811

Linux下C调用静态库和动态库

Linux下C调用静态库和动态库本文主要介绍Linux下C调用静态库和动态库,使用的样例文件请点击这里. 样例文件welcome.c:#include #include"welcome.h"void...
  • u011192270
  • u011192270
  • 2016-11-23 16:29:04
  • 2348
    个人资料
    持之以恒
    等级:
    访问量: 8509
    积分: 704
    排名: 7万+
    最新评论