1、平台:linux
2、安裝jdk,gcc
3、編寫java代碼
HelloWorld.java
public class HelloWorld
{
private native void print();
static
{
System.loadLibrary("HelloWorld");
}
public static void main(String[] args)
{
new HelloWorld().print();
}
}
4、編譯Java代碼
javac HelloWorld.java
5、產生標頭檔
javah -jni HelloWorld
6、標頭檔如下
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
7、編寫c檔案
#include "HelloWorld.h"
#include <jni.h>
JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World");
}
8、將c檔案編譯成linux平台下的動態串連庫,這裡需要注意,linux平台動態連結程式庫的命名方法(lib***.so)
gcc -I$JAVA_HOME/include -I$JAVA_HOME/include/linux -c HelloWorld.c
使用上面的命令編譯,產生.o檔案,再將.o檔案打包成.so檔案
gcc -shared -o libHelloWorld.so HelloWorld.o
產生libHelloWorld.so動態連結程式庫檔案
9、設定動態庫地址
export LD_LIBRARY_PATH=libHelloWorld.so所在目錄 :$LD_LIBRARY_PATH
10、運行代碼
java HelloWorld