ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

【2015-04-27】Linux下使用JNI封装调用已经存在的动态静态库

【2015-04-27】Linux下使用JNI封装调用已经存在的动态静态库 [历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2015-04-27 标题Linux下使用JNI封装调用已经存在的动态静态库分类编程 / java / C C 标签linux·java·jni·动态库·静态库Linux下使用JNI封装调用已经存在的动态静态库备注封装动态库封装静态库备注本文在以下两片笔记的基础上扩充而来【 http://116.62.110.235/blog/linux-dynamic-library-static-library/ 】【 http://116.62.110.235/blog/linux-jni-simple-example/ 】封装动态库#首先看下当前目录的文件$lsfunctions.c functions.h HelloJni.class HelloJni.java JniSwapper.c JniSwapper.class JniSwapper.h JniSwapper.java#先编译出一个动态库libfunc.so$ gcc functions.c-fPIC-shared-olibfunc.so#在libfunc.so的基础上编译libJniSwapper.so注意这里需要用-l来表明依赖$ gcc JniSwapper.c-fPIC-shared-I/usr/lib/jvm/java-7-openjdk-amd64/include -L.-lfunc-olibJniSwapper.so $exportLD_LIBRARY_PATH.:$LD_LIBRARY_PATH$ ldd libfunc.so linux-vdso.so.1(0x00007ffd4070f000)libc.so.6/lib/x86_64-linux-gnu/libc.so.6(0x00007f001c307000)/lib64/ld-linux-x86-64.so.2(0x00007f001c8ee000)$ ldd libJniSwapper.so linux-vdso.so.1(0x00007ffe161b2000)libfunc.so./libfunc.so(0x00007f128ad82000)libc.so.6/lib/x86_64-linux-gnu/libc.so.6(0x00007f128a99f000)/lib64/ld-linux-x86-64.so.2(0x00007f128b188000)#执行$ javac HelloJni.java $javaHelloJni100200300封装静态库#编译生成.a$ gcc-cfunctions.c $ ar-rcslibfunc.a functions.o $lsfunctions.c functions.h functions.o HelloJni.class HelloJni.java JniSwapper.c JniSwapper.class JniSwapper.h JniSwapper.java libfunc.a#在libfunc.a的基础上编译libJniSwapper.so注意这里需要用-l来表明依赖$ gcc JniSwapper.c-fPIC-shared-I/usr/lib/jvm/java-7-openjdk-amd64/include -L.-lfunc-olibJniSwapper.so $exportLD_LIBRARY_PATH.:$LD_LIBRARY_PATH$ ldd libJniSwapper.so linux-vdso.so.1(0x00007ffeceb62000)libc.so.6/lib/x86_64-linux-gnu/libc.so.6(0x00007f54cae40000)/lib64/ld-linux-x86-64.so.2(0x00007f54cb427000)#执行$ javac HelloJni.java $javaHelloJni100200300
返回列表