Today I compiled a 32-bit jsvc daemon tool linked to a 32-bit Java JDK on a 64-bit machine. Turns out I didn’t need it but am recording my notes in case someone else does need it.
I’m using the jsvc source that is bundled with Tomcat and Sun’s Java SE Development Kit 6u10 (jdk-6u10-linux-i586.bin).
$ JAVA_HOME=/usr/java/jdk1.6.0_10-32bit $ cd /usr/local/apache-tomcat-5.5.23/bin/jsvc-src $ CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 LDFLAGS="-L/usr/lib -L/lib" \ ./configure --build=i686-pc-linux-gnu $ make
make will error with
gcc -L/usr/java/jdk1.6.0_10-32bit/lib -L/usr/lib -L/lib -ldl -lpthread jsvc-unix.o libservice.a -o ../jsvc /usr/bin/ld: skipping incompatible /usr/lib/libdl.so when searching for -ldl /usr/bin/ld: skipping incompatible /usr/lib/libdl.a when searching for -ldl ....
Adjust that failing gcc command with the -m32 switch and compile manually.
$ cd native/ $ gcc -m32 -L/usr/java/jdk1.6.0_10-32bit/lib -L/usr/lib \ -L/lib -ldl -lpthread jsvc-unix.o libservice.a -o ../jsvc
There should now be a 32-bit jsvc binary in the jsvc-src directory.
$ file jsvc jsvc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped
Tip of the hat to a Tomcat mailing list thread started by Rob Tanner

No comments yet
Comments feed for this article