linux 动态库与静态库的制作与使用
静态库
func.h
#include<stdio.h>
int add(int a,int b);
int sub(int a,int b);
add.c
#include <stdio.h>
#include<stdlib.h>
int add(int a,int b)
{
return a+b;
}
sub.c
#include<stdio.h>
int sub(int a,int b)
{
return a-b;
}
main.c
#include"func.h"
int main()
{
int a=10,b=20;
int sum=add(a,b);
int minus=sub(a,b);
printf("sum=%d,minus=%d\n",sum,minus);
return 0;
}
1.将.c 源文件生成.o文件
gcc -c add.c sub.c
2.用ar 上成lib 静态库
ar rcs libtest.a add.o sub.o
- 前缀为lib
- 中间为动态库名
- 后缀为.a
3.使用静态库
gcc -o main main.c -I./ -L./ -ltest
- -I为.h 对应的目录
- -L为静态库对应的目录
- -l 为静态库对应目录下的文件名
动态库
1.生成 可共享的.o 文件
gcc -c -fpic sub.c add.c
2.生成动态库文件
gcc -shared add.o sub.o -o libtest2.so
3.连接运行
gcc -o main main.c -I./ -L./ -ltest2
4.在 ~./bashrc 路径下配置动态库路径
vim ~./.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ly/dynamicLib/lib
- /home/ly/dynamicLib/lib 为生成的so存储路径
5.运行
./main