JNI on ARM/XScale
Jari Korva
jpkorva@iki.fi
Mon Sep 20 13:03:00 GMT 2004
Hi,
Is anyone using JNI on ARM/XScale successfully? I've tried a simple JNI
HelloWorld both on armv5l (dynamically linked, gcj 3.4.0) and armv5b
(statically linked, gcc 3.4.1 & 3.4.2), but got the following error:
# ./hello
Exception in thread "main" java.lang.UnsatisfiedLinkError: ??E@:?.so:
cannot open shared object file: No such file or directory
at _ZN4java4lang7Runtime11loadLibraryEPNS0_6StringE
(/wrk/ipaq/lib/libgcj.so.5.0.0)
at _ZN4java4lang5Class15initializeClassEv
(/wrk/ipaq/lib/libgcj.so.5.0.0)
at _Jv_InitClass
(/wrk/ipaq/lib/libgcj.so.5.0.0)
at _ZN3gnu3gcj7runtime11FirstThread9call_mainEv
(/wrk/ipaq/lib/libgcj.so.5.0.0)
at _Z13_Jv_ThreadRunPN4java4lang6ThreadE
(/wrk/ipaq/lib/libgcj.so.5.0.0)
at _Z11_Jv_RunMainPN4java4lang5ClassEPKciPS4_b
(/wrk/ipaq/lib/libgcj.so.5.0.0)
at JvRunMain
(/wrk/ipaq/lib/libgcj.so.5.0.0)
at __libc_start_main (/lib/libc-2.3.2.so)
----
The same application works just fine on x86 (gcc 3.4.0).
I downloaded the sources from Java tutorial:
http://java.sun.com/docs/books/tutorial/native1.1/stepbystep/example-1dot1/HelloWorld.java
http://java.sun.com/docs/books/tutorial/native1.1/stepbystep/example-1dot1/HelloWorldImp.c
----
These are the commands I used for compiling:
arm-unknown-linux-gnu-gcj -C HelloWorld.java
arm-unknown-linux-gnu-gcjh -jni HelloWorld
arm-unknown-linux-gnu-gcj -c -fjni HelloWorld.java
arm-unknown-linux-gnu-gcc -c -I/opt/cross/armv5b-linux/include
HelloWorldImp.c
arm-unknown-linux-gnu-gcc -shared -I/opt/cross/armv5b-linux/include -o
libhello.so HelloWorldImp.c
arm-unknown-linux-gnu-gcj -o hello HelloWorld.o -o hello -L. -lhello
--main=HelloWorld
armv5b-softfloat-linux-gcj -C HelloWorld.java
armv5b-softfloat-linux-gcjh -jni HelloWorld
armv5b-softfloat-linux-gcj -c -fjni HelloWorld.java
armv5b-softfloat-linux-gcc -c -I/opt/cross/armv5b-linux/include
HelloWorldImp.c
armv5b-softfloat-linux-gcj -static -o hello HelloWorld.o HelloWorldImp.o
-o hello --main=HelloWorld
---
Here's the version information:
arm-unknown-linux-gnu-gcj -v
Reading specs from
/opt/cross/arm-linux-3.4.0/lib/gcc/arm-unknown-linux-gnu/3.4.0/specs
Reading specs from
/opt/cross/arm-linux-3.4.0/lib/gcc/arm-unknown-linux-gnu/3.4.0/../../../../arm-unknown-linux-gnu/lib/libgcj.spec
rename spec lib to liborig
Configured with:
/wrk/arm-linux/crosstool-0.28-rc26/build/arm-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/gcc-3.4.0/configure
--target=arm-unknown-linux-gnu --host=i686-host_pc-linux-gnu
--prefix=/opt/cross/arm-linux-3.4.0
--with-headers=/opt/cross/arm-linux-3.4.0/arm-unknown-linux-gnu/include
--with-local-prefix=/opt/cross/arm-linux-3.4.0/arm-unknown-linux-gnu
--disable-nls --enable-threads=posix --enable-symvers=gnu
--enable-__cxa_atexit --enable-languages=c,c++,java --enable-shared
--enable-c99 --enable-long-long
Thread model: posix
gcc version 3.4.0
% armv5b-softfloat-linux-gcj -v
Reading specs from /tmp/cross/lib/gcc/armv5b-softfloat-linux/3.4.2/specs
Reading specs from
/tmp/cross/lib/gcc/armv5b-softfloat-linux/3.4.2/../../../../armv5b-softfloat-linux/lib/libgcj.spec
rename spec lib to liborig
Configured with:
/wrk/arm-linux/crosstool-0.28-rc36/build/armv5b-softfloat-linux/gcc-3.4.2-glibc-2.3.3/gcc-3.4.2/configure
--target=armv5b-softfloat-linux --host=i686-host_pc-linux-gnu
--prefix=/tmp/cross --with-float=soft --with-cpu=xscale
--enable-cxx-flags=-mcpu=xscale
--with-headers=/tmp/cross/armv5b-softfloat-linux/include
--with-local-prefix=/tmp/cross/armv5b-softfloat-linux --disable-nls
--enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit
--enable-languages=c,c++,java --enable-shared --enable-c99
--enable-long-long
Thread model: posix
gcc version 3.4.2
--
- Jari Korva -
More information about the Java
mailing list