未命名

Linux jni 过程

使用linux gcc方式,完成一次jni的开发。
开发场景:
1、已有现成的cpp文件demo。
2、需要自定义java接口。
3、java中的native接口,需要模仿demo,来完成asr任务。
开发过程:
1、编写java接口文件:com/open/AsrAPI.java
2、编译生成class: javac com/open/AsrAPI.java
3、生成jni需要的头文件:javah -jni com.open.AsrAPI, 会生成com_open_AsrAPI.h
4、新建并编辑保存代码文件:com_open_AsrAPI.cpp, 实现h文件中的方法。
5、gcc编译生成输出文件,
gcc -I/etc/alternatives/java_sdk_1.8.0_openjdk/include -I/etc/alternatives/java_sdk_1.8.0_openjdk/include/linux -I. -I../../hso/ -L../../hso -lasr -L.-liconv -fPIC  -c com_open_AsrAPI.cpp util.cpp
-I: 指定lib库的搜索路径,-L指定链接库路径,-l指定链接库, -c指定编译文件,可以多个。
6、生成动态库.so gcc -shared -fPIC -o libasrAPI.so libasr.so libiconv.so util.o com_open_AsrAPI.o
7、测试执行java,classpath需要设置一下:
export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH

评论

热度(4)