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 <stdio.h>
#include "hello.h"
 
void  hello()
{
    printf("这是动态链接库接口方法\n");
}

//main.c
#include <stdio.h>
#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 <jni.h>
#ifndef _Included_HelloJNI
#define _Included_HelloJNI
#ifdef __cplusplus
extern "C" {
#endif

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值