为64位Linux中的32位JVM编译jsvc
Tomcat自动启动中要用到jsvc。有一个问题是,如果在64位Linux里使用32位jvm,而且编译jsvc时,采用的是默认选项,那么编译出来的jsvc是用不了的。
这是因为,64位Linux中编译得到的默认是64位的jsvc,而jvm又是32位的。
这种环境下的jsvc的编译得给gcc增加点选项:
cd /path/to/jsvc/src/native/unix/
CFLAGS=-m32 CPPFLAGS=-m32 CCASFLAGS=-m32 LDFLAGS="-L/path/to/32/bit/shared/libraries/" ./configure --with-java=/path/to/32/bit/jdk/ --build=i686-pc-linux-gnu
make
cd native/
gcc -m32 -L/path/to/32/bit/shared/libraries/ -ldl -lpthread jsvc-unix.o libservice.a -o ../jsvc
jsvc主要是通过signal来停止所控制的进程(Tomcat)的,其具体工作过程,可以参加apache jsvc的文档。