Linux下简单编译so库,调用另一个so库的方法

来源:互联网 发布:自制手机直播软件 编辑:程序博客网 时间:2024/06/05 03:33

linux下将c/c++编译成so库

gcc -fPIC -shared Cat.c -o libcat.so

-fPIC是压制警告
-shared是生成动态库
Cat.c是要编译的文件
-o是要生成的文件的名称

linux下将c/c++生成可执行文件

gcc -rdynamic -o main main.c -ldl

-rdynamic是生成可执行文件
-o是生成的文件的名称
main.c是要编译的文件
-ldl可以理解为要生成一个动态库吧(这个不是太懂)

之后会在当前目录下生成一个main文件
直接./main就可以执行了

下面举个例子

首先写了一个Cat.c

int add(int a,int b){    return (a + b);}

然后把Cat.c编译成一个so库

gcc -fPIC -shared Cat.c -o libcat.so

执行完之后会在当前路径下生成一个libcat.so文件


在写一个main方法,这里写了一个main.c

#include <stdio.h>#include <stdlib.h>#include <dlfcn.h>typedef int (*ADD)(int,int);int main(){    #这里调用刚才生成的so库里的add方法    void *handle=dlopen("./libcat.so",RTLD_LAZY);    ADD add=NULL;    *(void **)(&add)=dlsym(handle,"add");    int result=add(2,5);    printf("%d\n",result);    return 0;}

之后将main.c生成一个可以执行的文件main

gcc -rdynamic -o main main.c -ldl

执行之后会在当前路径下生成一个main文件

直接./main就会打印:7,也就是调用了刚才那个so库方法里的add方法

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 军校参加了政审体检误了怎么办 如果老板搬迁不给工人补偿怎么办 下面的毛很多又掉的厉害怎么办? 想去美国开饭店要怎么办签证 在沙漠中旅游如果车子坏了该怎么办 小磨床平面磨出来很粗怎么办 玩cs鼠标单点总是连点怎么办 论文出现计算上的错误该怎么办 不戴头盔违法扣分怎么办不了缴费 去法国会说英语不会说法语怎么办 企业有很多费用没有正式发票怎么办 我二张一万元的作废发票掉了怎么办 小规模上月开错税率的票怎么办 一般纳税人开票税率开错了怎么办 电信电子发票代表号码错了怎么办 发票备注栏项目名称写了两遍怎么办 苏州出入境手撕发票弄丢了怎么办 电脑下载过播放器还是不播放怎么办 局域网内的电脑无法互相访问怎么办 浏览器拖动滑动线页面会跳动怎么办 在暴风影音上视频播放不出来怎么办 格式工厂转换格式占内存太大怎么办 手机登陆不上路由器管理界面怎么办 新路由器设置密码后不能上网怎么办 更换网络后无线路由器不能用怎么办 手机登录不了路由器登录业面怎么办 海康威视通道用户被锁定怎么办 无线适配器或访问点有问题怎么办 客户买鞋子说价格贵该怎么办 小米5s刷成真砖后怎么办 手机电源键坏了开不了机怎么办 手机开关键坏了开不了机怎么办 vivo手机解屏密码忘了怎么办 小米max关机后开关键坏了怎么办 联想手机刷机失败无限重启怎么办 红米2a显示白屏怎么办 小米6手机一直处于开机状态怎么办 怎么在手机上看wifi密码怎么办 怎么查自己的宽带密码忘记了怎么办 怎么查自己宽带账号密码忘了怎么办 电脑重置路由器密码连不上网怎么办