1)静态链接库与动态链接库都是共享代码的方式,
区别:
如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。
静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。
注意:在window下的动态链接:后缀为dll;而linux下多为.so
2)在gcc中添加静态/动态链接库,并且编译
I(大写的i) 是 Include 头文件路径
L 是 link 目录
l (小写的L)是链接文件 ,在L指定的位置找
libtest/include/hello.h
#ifdef _HELLO_H_
#define _HELLO_H_
void hello();
#endif
libtest/lib/hello.c
#include"hello.h"
#include <stdio.h>
void hello()
{
printf("hello world!\n");
}