1、静态库
静态库是在程序编译时被链接到目标代码中,扩展名为 .a
例如://myfun.h
#include<stdio.h>
void fun1();
void fun2();
//myfun1.c
#include"myfun.h"
void fun1()
{ printf("this is fun1/n"); }
//myfun2.c
#include"myfun.h"
void fun2()
{ printf("this is fun2/n"); }
//main.c
int main()
{ fun1(); fun2(); }
生成.o文件:gcc -c myfun1.c myfun2.c
创建静态链接库:ar r libmylib.a myfun1.o myfun2.o
编译:gcc main.c -o main -L . -lmylib
运行:./main
2、动态库
动态链接库是在程序运行时加载的,运行时需要用到 .so 动态库。动态库的扩展名为 .so 。
创建动态链接库:gcc -fpic -shared -o libmylib.so myfun1.c myfun2.c
编译:gcc main.c -o main -L . -lmylib
设置环境变量:export LD_LIBRARY_PATH=$PWD
运行:./main