一.动态库的基本概念
  1. 动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序。动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。库中函数和变量的地址是相对地址,不是地址,其真实地址在调用动态库的程序加载时形成。
  2. 动态链接库的名称有别名(soname), 真名(realname)和链接名(linker name)。别名由一个前缀lib,然后是库的名字,再加上一个后缀“.so”构成。真名是动态链接库真实名称,一般总是在别名的基础加上一个小版本号,发布版本等构成。除此之外,还有一个链接名,即程序链接时使用的库的名字。
  3.在动态链接库安装的时候,总是复制文件到某个目录下,然后用一个软连接生成别名,在库文件进行更新的时候,仅仅更新软链接即可。
  二.生成和使用动态库
  1.看一个实例来了解如何自己生成静态库和使用静态库
  创建程序文件
  1>在test文件夹下有三个文件: main.c ,add.c,sub.c,tiger.h
  2> main.c文件中的内容:
  #include<stdio.h>
  #include”tiger.h”
  int  main(void)
  {
  printf(“sum =%d ”,add(5,3));
  printf(“sub= %d ”,sub(5,3));
  return 0;
  }
  3>.tiger.h文件中的内容:
  #ifndef __TIGER__
  #define __TIGER__
  int add(int  a,int  b);
  int sub(int  a,int  b);
  #endif
  4>.add.c文件中的内容
  int  add(int a, int b)
  {
  return a +b;
  }
  5>.sub.c文件中的内容
  int  sub(int a, int b)
  {
  return  a - b;
  }