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
1 comment
Comments feed for this article
December 30, 2009 at 10:53 am
Compiling jsvc for tomcat 6 for 32bit Java on a 64 bit Centos 5 System… « pblog
[…] I googled for a solution to that problem, I found an interesting blog post. So to add a “pingback” for that article, I thought I would post the solution to the […]