linux中实现jni 例子

linux中jni实现例子:


1.安装gcc: 如果你的linux中已经可以执行gcc命令,那说明已经装好了gcc的,不用再装了
2安装jdk: 我的机子安装的路径    /root/jdk/jdk1.6.0_25
3.创建文件夹: /root/jniTest/com/fs/test
4.在test文件夹中创建java类 HelloJNI.java
代码为
package com.fs.test;
public class HelloJNI  
{  
  static  
  {  
     System.loadLibrary("goodluck");  
  } 
  public native  int get();  
  public native  void set(int i); 
  public static void main(String[] args)  
  {  
     HelloJNI test = new HelloJNI();  
     test.set(10);  
    System.out.println(test.get());  
  }  
}

5.终端中进入HelloJNI所在的文件夹test, 编译HelloJNI.java 得到HelloJNI.class
 编译命令为:   javac HelloJNI.java

6.终端中进入文件夹jniTest, 例上一步生成的.class文件,生成对应的.h头文件
命令为: javah com.fs.test.HelloJNI
命令执行后会在jniTest文件夹中得到com_fs_test_HelloJNI.h文件

7. 在jniTest文件夹中编写HelloJNI.c文件,实现引用第6步中生成的.h头文件,并实现其中声明的方法。
[代码]
#include "com_fs_test_HelloJNI.h"
int i = 0;
JNIEXPORT jint JNICALL Java_com_fs_test_HelloJNI_get(JNIEnv *env, jclass jc) 

    return i; 
}

JNIEXPORT void JNICALL Java_com_fs_test_HelloJNI_set(JNIEnv *env, jclass jc, jint j) 

      i= j; 
}


8.将第7步中编写的HelloJNI.c文件,编译成.o文件。即从终端进入jniTest文件夹,使用下面的命令
gcc -fPIC -D_REENTRANT -I /root/jdk/jdk1.6.0_25/include -I /root/jdk/jdk1.6.0_25/include/linux -c HelloJNI.c
命令执行完成后会在jniTest文件夹中生成HelloJNI.o文件
注:
/root/jdk/jdk1.6.0_25/include 是jni.h头文件所在的路径
/root/jdk/jdk1.6.0_25/include/linux 是jni_md.h所在的路径


9. 将第8步中生成的HelloJNI.o文件编译成.so库文件。即从终端进入jniTest文件平,使用下面命令
gcc -shared HelloJNI.o -o libgoodluck.so
执行完成后会在jniTest文件夹中生成libgoodluck.so文件


注:

第8步与第9步可以使用一个命令完成,只需要合成一步: 

     gcc –fPIC –I  /root/jdk/jdk1.6.0_25/include  -I  /root/jdk/jdk1.6.0_25/include/linux  –shared –o libgoodluck.so HelloJNI.c


10.将第9步中生成的libgoodluck.so文件拷贝到java的加载库LD_LIBRARY_PATH指向的路径中。

1)创建目录/root/jniso,把libgoodluck.so拷贝到/root/jniso中去。

  注:可以是任意文件夹,但是前提是文件夹有“可读可写可执行”权限

2)从终端中通过命令vim /etc/profile 打开profile文件, 然后在文件的最后加上
export LD_LIBRARY_PATH=/root/jniso  然后保存退出
3)重启linux系统,或注册linux系统,重新登陆。

 

注:

上面第10步可以改为以下操作,让路径只在当前用户下生效:

1)创建目录/root/jniso,把libgoodluck.so拷贝到/root/jniso中去。

  注:可以是任意文件夹,但是前提是文件夹有“可读可写可执行”权限

2)从终端中通过命令vim /root/.bashrc  打开/root下的隐藏文件".bashrc", 然后在文件的最后加上
export LD_LIBRARY_PATH=/root/jniso  然后保存退出
3)重启linux系统,或注册linux系统,重新登陆。


11..终端中进入文件夹jniTest运行HelloJNI.class, 命令为:

java com.fs.test.HelloJNI

ok看到结果为10,说明你成功了。





































  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值