后台开发中 调取so库

由于公司将算法全部放到云上做处理,因此需要创建linux的动态链接库进行线上使用,之前做Android的都知道Android自身是cmake进行编译成so库并通过JNI层和java进行调用的,那么同理。

第一步

  • 准备我们的linux环境
# yum install gcc
yum install gcc-c++ libstdc++-devel

增加我们的gcc的编译环境。

  • 准备我们的java环境(注意你的本地jdk版本要和云上保持相同,否则会出现版本大于50的error)
yum install java-1.8.0-openjdk*

第二部

进行编写jni层内容

public class CoBrainLib {

    static {
//        System.loadLibrary("/CoBrainLib");
        System.load("/root/cogrowth/libss.so");
    }
    public native float add(int x, int d);

    public static void main(String[] args) {
        System.out.println("Hello World!");
        float add = new CoBrainLib().add(1, 1);
        System.out.println("<     当前累加结果为:    " + add);
    }
}

我们使用

javah CoBrainLib

进行生成我们需要的JNi



extern "C"
JNIEXPORT jfloat JNICALL Java_com_cogrowth_algorithm_jni_CoBrainLib_add(JNIEnv *env, jobject /* this */oc, jint x, jint y) {
    return x+y;   //简单的加法
}

第三步

进行生成我们需要的so文件

g++ -I "/usr/lib/jvm/java-1.8.0/include/linux/" -I "/usr/lib/jvm/java-1.8.0/include" -fpic -shared -o /root/cogrowth/libss.so /root/cogrowth/CoBrainLib.cpp 

第四步

进行调用

java -jar test.jar  // 这里打了一个jar包

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_15807167/article/details/79837866