编译高性能linux so库,linux环境下编译so库和编译可执行文件

编译生成so库

gcc -fPIC -shared caculate.c -o libcaculate.so

-fPIC 压制警告

-shared 动态库

-o 生成目标的文件名

caculate.c

int add(int a,int b){

return (a*b);

}

编译生成可执行文件

gcc -rdynamic -o main main.c

-rdynamic 生成可执行文件

-o 目标文件名

main是linux环境下的一个可执行文件。

main.c

#include

#include

//Linux提供的一套API来动态装载库

#include

typedef int (*ADD)(int,int);

int main(){

//dlopen,打开一个库,并为使用该库做些准备

void *handle=dlopen("./libcat.so",RTLD_LAZY);

ADD add=NULL;

//dlsym,在打开的库中查找符号的值

*(void **)(&add)=dlsym(handle,"add");

int reslut=add(2,5);

printf("%d\n",reslut);

return 0;

}

一次性手动编译动态库

gcc -c main.c -o main.o

gcc -c minus.c -o minus.o

gcc -c mulit.c -o mulit.o

gcc -c plus.c -o plus.o

gcc main.o minus.o mulit.o plus.o -o myapp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值