日期:2014-05-16  浏览次数:20701 次

为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的文档。
1 楼 j2ee_yohn 2012-06-16  
你好请问这个/path/to/32/bit/shared/libraries/是指什么路径
2 楼 451568057 2012-07-09  
是不是这个错误
Cannot find any VM in Java Home /usr/java/jdk1.6.0_32