1、編譯CVM
2、在cvm/cdc/src/share/cdc/demo/cdc/HelloWorld.java中,
package cdc;
public class HelloWorld {
+ private static native void testprintf();
public static void main(String args[]) {
System.out.println("Hello world!!!!!!!!!!.");
+ testprintf();
}
+ static {
+ System.loadLibrary("testprintf");
+ }
}
3、生成.class
$ javac HelloWorld.java
4、生成頭文件:
javah -jni cdc/HelloWorld
5、動態庫:
$ testprintf.c
#include <jni.h>
#include "cdc_HelloWorld.h"
#include <stdio.h>
void func(void)
{
volatile long long num = 0x1122334455667788;
printf("%llx\n", num);
return;
}
JNIEXPORT void JNICALL Java_cdc_HelloWorld_testprintf (JNIEnv *env, jobject obj)
{
volatile long long num1 = 0x1122334455667788;
volatile double num2 = 0.123456789;
printf("%llx %lf\n", num1, num2);
func();
return;
}
編譯動態庫
/tools/csky/csky-tools/uclibc/csky-linux-tools-x86_64/bin/csky-linux-gcc -I/usr/lib/gcc/x86_64-redhat-linux/3.4.3/include -c -o testprintf.o testprintf.c -fPIC
/tools/csky/csky-tools/uclibc/csky-linux-tools-x86_64/bin/csky-linux-gcc -shared -o libtestprintf.so testprintf.o -fPIC
cp libtestprintf.so /home/rtos_nfs/chenlf/rootfsle2/lib/
6、運行:
$ mkdir rootfs/cdc-cvm_1.2-linux_cskyv1_ck610-bin/cdc
$ cd rootfs/cdc-cvm_1.2-linux_cskyv1_ck610-bin/
$ cp cdc/HelloWorld.class rootfs/cdc-cvm_1.2-linux_cskyv1_ck610-bin/cdc
$ ./bin/cvm cdc.HelloWorld