Linux环境下生成.so动态库:
gcc -fPIC -shared calculator.c -o lib.so
- fPIC 压制警告
- shared 动态库
- o 生成目标的文件名
在Linux环境下将.c文件编译成可执行文件
gcc -rdynamic -o main main.c -ldl
- rdynamic 生成可执行文件
- main.c 源文件名
- main 可执行文件名
如何在c调用so中的方法:
int add(int a,int b){
return a+b;
}
将上面的代码编译成lib.so
#include<stdlib.h>
#include<stdio.h>
#include<dlfcn.h>
typedef int (*ADD)(int,int);
int main(){
void *handle = dlopen("./lib.so",RTLD_LAZY);
ADD add=NULL;
*(void **)(&add)= dlsym(handle,"add");
int result = add(2,7);
printf("%d\n",result);
return 0;
}