首先看看静态库和动态库的定义
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的静态库。
<