xiaoyuzhou1228

LKT5103A Hid接口LINUX系统下JNI开发流程

0
阅读(1980)

一、什么是JNI

Java以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。解决Java对本地操作的一种方法就是JNI。JNI是Java native interface的简写,意为Java本地调用,它允许Java代码和其他语言写的代码进行交互,从Java1.1开始,JNI标准成为Java平台的一部分。

     使用Java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,与硬件、操作系统进行交互,或者为了提高程序的性能。

二、平台以及环境

(1)开发平台

Linux系统或者虚拟机。

注意:因为涉及到LINUX下的HID接口,所以保证开发的系统内核在2.6版本以上。

(2)开发包

1):安装gcc和g++,保证两个版本一致。

安装指令:

yum install gcc

yum install gcc-c++

查版本指令:

g++ --version

gcc --version

2):安装jdk环境。具体可以上网上找资料。

以debian系统为例,在终端运行的安装指令如下:

sudo apt-get update

sudo apt-get install default-jre

sudo apt-get install default-jdk

三、开发步骤

1)创建一个Java程序(如LKT5103AJni.java)定义原生的c/c++函数。

2)用javac编译(指令:javac LKT5103AJni.java) LKT5103AJni.java生成 LKT5103AJni.class。

3)用javah带-jni参数编译(指令:javah -jni LKT5103AJni) LKT5103AJni.class生成 LKT5103AJni.h文件,该文件中 定义了c的函数原型。在实现c函数的时候需要。

4)创建LKT5103AJni.c,实现LKT5103AJni.h定义的函数。

5)编译LKT5103AJni.c生成libLKT5103AJni.so。

指令:gcc -I/usr/lib/jvm/java-8-openjdk-amd64/include/ -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux -fPIC -shared -o libLKT5103AJni.so LKT5103AJni.c

6)创建testJni.Java,实现测试jni接口。

7)编译testJni.java(指令:javac testJni.java)。

8)运行测试代码。

(指令:export LD_LIBRARY_PATH=./   

java testJni   

或者:

java -Djava.library.path=. testJni)