I'm having trouble building the GNU classpath 0.92 on a x86-64 platform running RHEL 4.2. I am trying to build the files to use with the Jikes RVM, which is using/generating 32-bit code. When it tries to instantiate, it complains that it cannot find
libjavaio.so. It's in the Jikes build directory, my LD_LIBRARY_PATH, and the directory it's supposed to look for it. Indeed, the path it gives matches a working version of the file. My path experience with this means it's trying to load a file of an incompatible bitness, and this is what I see when I run readelf -h on it:
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x18a0
Start of program headers: 64 (bytes into file)
Start of section headers: 109232 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 5
Size of section headers: 64 (bytes)
Number of section headers: 36
Section header string table index: 33
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x18a0
Start of program headers: 64 (bytes into file)
Start of section headers: 109232 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 5
Size of section headers: 64 (bytes)
Number of section headers: 36
Section header string table index: 33
On 32-bit libraries, I find they're the ELF32 class.
Here's my configure command:
./configure --disable-gtk-peer --with-jikes --disable-plugin --host=i586-redhat-linux-gnu --target=i586-redhat-linux-gnu
It seems to configure, build, and install find. It puts the libraries into /usr/local/classpath/lib/classpath, noteably libjavaio.so is stored as libjavaio.so.0.0.0 but it's linked to libjavaio.so.0. The Jikes RVM script is picking up on this fine. The timestamps in the classpath install directory update when I rebuild. It's just that I keep getting 64-bit code.
How do I get it to build 32-bit code?