Rpi2
の基本CコードをJNI
でコンパイルしようとしています。私はGCC
とで直接やろうとしていました。私は多くの異なるスイッチを試してみましたが、何も作業していないと私はまだ取得しています:Raspberry Pi 2のJNIでCをコンパイルする(ELFクラスが間違っている)
Java HotSpot(TM) Client VM warning: You have loaded library /tmp/libTestLibraryWrapper7702387558318276188.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Exception in thread "main" java.lang.UnsatisfiedLinkError:
/tmp/libTestLibraryWrapper7702387558318276188.so:
/tmp/libTestLibraryWrapper7702387558318276188.so:
wrong ELF class: ELFCLASS64 (Possible cause: architecture word width mismatch)
私が使用しています:
gcc -shared -march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard -c -g -I/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/include/ -I/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/include/linux -fPIC -MMD -MP -MF "build/Debug/GNU-Linux/testJava.o.d" -o build/Debug/GNU-Linux/testJava.o testJava.c
を私は今少しこだわっていますので、ヒントのいずれかの種類感謝されます。
64ビットの共有オブジェクトが作成されているようです。 32ビットJVMを実行している場合は、32ビットの共有オブジェクトが必要です。 'gcc -m32 ...'は32ビット共有オブジェクトを生成します。 –