http://www.jajakarta.org/tomcat/tomcat5.0/mix/docs/tomcat-docs/setup.html
を参考にして Linux で jsvc をコンパイルしたら、
# cd /usr/local/tomcat/bin # cp -a jsvc.tar.gz /tmp # cd /tmp # tar xvzf jsvc.tar.gz # cd jsvc-src # chmod +x configure # ./configure --with-java=/usr/java # make make -C native all make[1]: Entering directory `/tmp/jsvc-src/native' gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -I/usr/java/include -I/usr/java/include/linux -Wall -Wstrict-prototypes -c java.c -o java.o java.c:22:17: error: jni.h: No such file or directory java.c:35: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token java.c:36: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token java.c:37: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘cls’ ... make[1]: *** [java.o] Error 1 make[1]: Leaving directory `/tmp/jsvc-src/native' make: *** [native/all] Error 2
って怒られた。
本当に jni.h がないのか調べてみると、
# find / -name jni.h
/u01/app/oracle/product/10.2.0/db_1/jdk/include/jni.h
/usr/java/jdk1.6.0_18/include/jni.h
あった。
ところで、--with-java ってなんだ?
スクリプトを実行する前に、JAVA_HOME環境変数にJDKインストールパスを設定する必要があります。 またはその代わりに、./configureスクリプトを実行する際に、 ./configure --with-java=/usr/javaというように --with-javaパラメータを使ってJDKのパスを指定します。
http://www.jajakarta.org/tomcat/tomcat5.0/mix/docs/tomcat-docs/setup.html
つまり、JAVA_HOME を指定するってことか。今回の環境だと /usr/java/default だから、
# ./configure --with-java=/usr/java/default # make make -C native all make[1]: Entering directory `/tmp/jsvc-src/native' gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -I/usr/java/default/include -I/usr/java/default/include/linux -Wall -Wstrict-prototypes -c java.c -o java.o java.c:49: warning: function declaration isn’t a prototype java.c: In function ‘java_init’: java.c:122: warning: implicit declaration of function ‘dso_error’ gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -I/usr/java/default/include -I/usr/java/default/include/linux -Wall -Wstrict-prototypes -c location.c -o location.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -I/usr/java/default/include -I/usr/java/default/include/linux -Wall -Wstrict-prototypes -c replace.c -o replace.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU=\"amd64\" -I/usr/java/default/include -I/usr/java/default/include/linux -Wall -Wstrict-prototypes -c signals.c -o signals.o ar cr libservice.a arguments.o debug.o dso-dlfcn.o dso-dyld.o help.o home.o java.o location.o replace.o signals.o ranlib libservice.a gcc -ldl -lpthread jsvc-unix.o libservice.a -o ../jsvc make[1]: Leaving directory `/tmp/jsvc-src/native'
おk!