一、静态库
//add.h
#ifndef __ADD_H__
#define __ADD_H__
int add(int a, int b);
#endif //__ADD_H__
/add.c
#include"add.h"
int add(int a, int b)
{
return a+b;
}
/sub.h
#ifndef __SUB_H__
#define __SUB_H__
int sub(int a, int b);
#endif// __SUB_H__
///sub.c
#include"sub.h"
int sub(int a,int b)
{
return a-b;
}
///main.c
#include<stdio.h>
#include"add.h"
#include"sub.h"
int main()
{
int a = 10;
int b = 20;
printf("add(%d, %d) = %d\n", a, b, add(a,b));
a = 100;
b = 20;
printf("sub(%d, %d) = %d\n", a, b, sub(a, b));
return 0;
}
库搜索路径
- 从左到右搜索-L指定的目录
- 由环境变量指定的目录
- 由系统指定的目录>* /usr/lib > */usr/local/lib
二、动态库
- shared :表示生成共享库格式
- fPIC :产生位置无关码
- 库名规则:libxxx.so
编译选项
- l:链接动态库,只要库名即可
- L:链接库所在的路径
运行动态库
- 拷贝.so文件到系统共享库路径下,一般指/usr/lib
- 更改LD_LIBRARY_PATH
- ldconfig配置/etc/ld.so.conf.d/,ldconfig
代码同上