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