linux动态加载so详细过程,Linux编译动态链接库,springboot集成调用so方法

1.安装编译环境

yum -y install gcc

yum -y install gcc-c++

yum install -y java-1.8.0-openjdk*

2.编译C动态库

准备三个文件:hello.h 、 hello.c 、 main.c

//hello.h

#ifndef _HELLO_H_

#define _HELLO_H_

void hello();

#endif /* _HELLO_H_ */

//hello.c

#include

#include "hello.h"

void hello()

{

printf("这是动态链接库接口方法\n");

}

//main.c

#include

#include "hello.h"

int main(void)

{

hello();

return 0;

}

2.1 编译生成so

gcc hello.c -fPIC -shared -o libnative.so

参数说明:

-fPIC 位置无关码

-shared 按照共享库的方式来链接

2.2 可执行程序链接so

gcc main.c -L. -lnative -o main

参数说明:

-L参数:指明要链接的so库所在路径(如-L. 表示当前路径, -L../so 表示当前路径的上一层目录的so子文件夹中)

-l参数:指明要连接的库的名字,如-lnative 表示要链接libnative.so库

2.3运行可执行程序

./main

注意:运行的时候会提示找不到链接库,需要配置系统链接库的位置

配置系统环境变量:

//当前窗口有效

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/native

//永久生效

vim /etc/profile

export LD_LIBRARY_PATH=/root/native

source /etc/profile

3.SpringBoot调用Jni动态库

准备源码文件:HelloJNI.java、HelloNative.h、HelloNative.c

//HelloJNI.java

public class HelloJNI {

//链接库的方法

public native static void setNum(int num);

public native static int get();

}

//HelloNative.h

#include

#ifndef _Included_HelloJNI

#define _Included_HelloJNI

#ifdef __cplusplus

extern "C" {

#endif

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值