I recently built mod_jk on AIX 4.3.3, and would like to share my experience
with you in the hope that it may be useful to some of you.

I used the following tool-set/platform:

gcc 2.95.2
gmake 3.79
automake 1.6
autoconf 1.53
m4 1.4
libtool 1.4.2
apache 1.3.26
jakarta tomcat 4.1.10
jakarta tomcat connectors 4.1.10
jakarta ant 1.4.1
java 1.3.0
perl 5.005_003
AIX 4.3.3

1. In my first attempt, I was unable to build mod_jk.so. As I investigated,
I discovered the following reason for it.

The build process invoked "cc" rather than "gcc", even though gcc was in the
path first. I worked around this problem by creating a symbolic link called
"cc" to "gcc".

2. I ran "ant native" from the jk sub-directory. However, this failed
eventually because my Java installation didnot have the JNI bits.

To ensure that I build only mod_jk and nothing else, I changed the build.xml
file in jk/native, as follows:

<project name="jk_native" default="apache13" basedir=".">

The build then failed trying to build native2. So I commented out the line
in jk/build.xml that builds native2 as follows:

    <!-- It's better to call it directly with individual tags -->
    <target name="native" depends="jkant,detect,report" >
        <ant  dir="native" antfile="build.xml"  />
        <!-- <ant  dir="native2" antfile="build.xml"  /> -->
    </target>

This time the build was successful. However, I could not find any mod_jk.so.
Instead, I found two files - libmod_jk.a, and mod_jk.la in
jk/build/jk/apache13 sub-directory. I also found the following files in the
jk/build/jk/apache13/.libs sub-directory :
libmod_jk.a
libmod_jk.exp
libmod_jk.so.0
mod_jk.la
mod_jk.lai

I manually copied libmod_jk.so.0 to apache/libexec/mod_jk.so, and tried
running (after appropriate changes to httpd.conf):

apachectl configtest

I got a coredmp as follows:

33 terptech[]/teur/cre/erptech/wrk/dibyendu/apache/bin: apachectl configtest
/teur/cre/erptech/wrk/dibyendu/apache/bin/apachectl[145]: 35908 Segmentation
fault(coredump)

At this point, I gave up on this approach and tried another route.

3. My next attempt was to build mod_jk using configure/make combination.
After a number of false starts (due to problems in my installation of
libtool and automake), I was able to execute following:

cd jk/native
./buildconf.sh
./configure --with-apxs=$APACHE_HOME/bin/apxs
make

The build succeeded but, I could find no mod_jk.so. When I looked in
jk/native/apache-1.3 sub-directory, I found:

libjk.a
libjk.la
libjk.module
libmod_jk.a
mod_jk.c
mod_jk.dsp
mod_jk.la
mod_jk.lo
mod_jk.o

At this point, I gave up this approach as well, and decided to try another.

4. My final attempt succeeded and this is what I did.

I decided to build mod_jk.so directly using apxs and bypass the make/ant
tools. I decided this because I found that the real problem was in "libtool"
which was broken and didnot know how to build shared libraries on AIX.
Hence, it was just not able to build mod_jk.so.

My first attempt was as follows:

cd jk/native/common
$APACHE_HOME/bin/apxs -c -o mod_jk.so -I. *.c ../apache-1.3/mod_jk.c

This failed to compile two files which appeared to be related to jni. I
removed these two files (jk_jni_worker.c  jk_jni_worker.h), and tried again.
This time, the link failed with errors. Apparently, the AIX linker expected
a .exp file containing a list of exported functions. Since I didnot have
this, I decided to try the following linker options:
-bexpall -berok -bnogc

I added these options to apxs, as follows:

my $CFG_LDFLAGS_SHLIB =
q(-bexpall -berok -bnogc -H512 -T512 -bhalt:4 -bM:SRE -b
noentry -bI:/teur/cre/erptech/wrk/dibyendu/apache/libexec/httpd.exp -lc); #
subs
tituted via Makefile.tmpl

I ran the apxs command again. It succeeded and finally built mod_jk.so.

I have tested mod_jk.so with the example servlets in tomcat - so far its
worked okay without any problems.

Regards
Dibyendu








--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to