Hello Sir,
I am really searching hard for solution on
" ELF file OS ABI invalid" error.
I am running Simple Jni example (to test jni. I am getting same error in my project)
on
FreeBSD 4.10 but I am getting following error
while executing my java Program
Quote:
%java Sample1
Exception in thread "main" java.lang.UnsatisfiedLinkError:
/usr/home/smgusr/mangesh/libSample1.so.1.0.1: /usr/home/smgusr/mangesh/libSample1.so.1.0.1:
ELF file OS ABI invalid
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1560)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1456)
at java.lang.Runtime.load0(Runtime.java:737)
at java.lang.System.load(System.java:811)
at Sample1.main(Sample1.java:10)
|
if I use ldd command it refer like this
Quote:
%ldd /usr/home/smgusr/mangesh/libSample1.so.1.0.1
/usr/home/smgusr/mangesh/libSample1.so.1.0.1:
libc.so.4 => /usr/lib/libc.so.4 (0x2806a000)
|
I have made libSample1.so.1.0.1 following way:
Quote:
gcc -o2 -fPIC -g -I/usr/local/linux-sun-jdk1.4.2/include
-I/usr/local/linux-sun-jdk1.4.2/include/linux -c Sample1.c -o Sample1.o
|
for linking and making shared library
Quote:
gcc -o2 -shared -fPIC -pthread -Wl -I/usr/local/linux-sun-jdk1.4.2/include
-I/usr/local/linux-sun-jdk1.4.2/include/linux -soname,libSample1.so.1
-o libSample1.so.1.0.1 Sample1.o -L/usr/compat/linux/lib -L/usr/lib
-L/usr/home/smgusr/mangesh -lc
|
Even though I try to load standard shared library from /usr/lib the error persist
what is going wrong is it Linux emulator problem??????????? or my shared lirary problem????
We have installed linux_base to set linux environment
set linux_base="yes" (/etc/rc.conf)
set kern.fallback_brand=3 (/etc/sysctl.conf)
Running kldstat is giving following result
%kldstat
Id Refs Address Size Name
1 4 0xc0100000 44fbf8 kernel
2 1 0xc33e3000 7000 linprocfs.ko
3 1 0xc3455000 15000 linux.ko
4 1 0xc3646000 3000 snp.ko
Running following command to check linux binary compatibility layer is loaded:
%kldstat -v | grep linuxelf
219 linuxelf
I am getting above output (that means layer is loaded )
Running following command to check layer is compiled into the kernel or
loaded as a module:
% kldstat | grep linux.ko
3 1 0xc3455000 15000 linux.ko
I am getting the above output
(
ref link: merlinobbs.net/modules.php?name=News&file=article&sid=483
Does it means it needs some more settings???????like setting options compat_linux in kernel config)
is There any issue related to configuring ld.so files on FreeBSD???
linprocfs is mounted and showing entry in the (/etc/fstab) and kldstat command
How can I check the linprocfs is working properly??
I used the brandelf -t Linux libSample1.so.1.0.1 but same error
Is it referring to java executables cause they are (SYSV) type??
any other file to chnage the binaries??
I am awaiting yours valuable suggestions.
configuration is :
Quote:
FreeBSD 4.10-BETA (GENERIC)
I am using following packages
java.vm.version: "1.4.2_04-b05"
linux-sun-jdk-1.4.2.04 Sun Java Development Kit 1.4 for Linux
linux_base-8-8.0_4 Base set of packages needed in Linux mode (only for i386)
linux_devtools-8.0_1 Packages needed for doing development in Linux mode
libtool-1.3.5_1 Generic shared library support script
gmake-3.80_1 GNU version of 'make' utility
automake-1.4.5_9 GNU Standards-compliant Makefile generator (legacy version
GCC 2.95.4
gdb 4.18
ld 2.12.1 supported emulation elf_i386
|
Regards
man26