Java JNI編譯小記

  一直都做Android開發,而且編譯JNI代碼都是用Google提供的NDK,今天做個J2SE平臺的JNI,發現離開Android平臺還多少不習慣了,編譯so庫都弄了半天,記下編譯命令,以備後用。編譯前提安裝JDK和gcc/g++環境,我用的是gcc。步驟如下:


1.編譯Java源代碼
javac FifoTest.java

2. 生成*.H頭文件
javah FifoTest.java

3.實現*.C文件,如FifoTest.c
# coding...

4. 編譯*.c文件生成 *.o文件,這裏注意JDK路徑
gcc -c FifoTest.c -I./ -I/usr/lib/jvm/java-1.6.0-openjdk/include -I/usr/lib/jvm/java-1.6.0-openjdk/include/linux -o fifojni.o
(PS: -I optional with the jdk include file, you can find the include using this "locate include | grep java" to get the location of your jdk include)

#64位需要-fPIC選項
gcc -fPIC -c FifoTest.c -I./ -I/usr/lib/jvm/java-6-sun-1.6.0.26/include -I/usr/lib/jvm/java-6-sun-1.6.0.26/include/linux -o fifojni.o

5. 編譯*.o 文件生成 *.so file
gcc -rdynamic -shared fifojni.o -o libfifo-jni.so



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章