linux中静态库和动态库的区别,Linux下静态库和动态库的区别

  • Post author:
  • Post category:linux


首先看看静态库和动态库的定义

linux下的库有两种:静态库和共享库(动态库)。

二者的不同点在于代码被载入的时刻不同。

静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。

共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。

不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例。

下面通过一个实例来说明一下静态库和动态库的区别。

构建程序,最简单的hellworld,其目录结构如下:

test

–hello.h

–hello.c

–test.c

各文件代码如下:

hello.h

void hello(void);

hello.c

#include “hello.h”

void hello(void)

{

printf(“Hello World\n”);

}

test.c

#include “hello.h”

int main(void)

{

hello();

return 0;

}

下面我们就分别做成静态库和动态库。

1. 静态库的制作

# gcc -o hello.o -c hello.c   //编译

# ar cqs libhello.a hello.o   //本步骤生成静态库

经过上述的步骤后,将会生成libhello.a的静态库。

<