You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Bernard Landman <bl...@us.ibm.com> on 2002/06/23 07:22:05 UTC

Problem compiling mod_jk.so

Folks,

I am attempting to create a mod_jk.so connector/redirector to tie
Tomcat 4.0.3 (running correctly using its built-in HTTP server)
to an IBM HTTP Server (IHS) Version 1.3.19. The server documentation
says IHS is based on the Apache server so I assume it is Apache 1.3.19.
To continue, the OS is AIX 4.3.3, perl 5.6 is installed, Java 1.3.0 is
installed, and the workstation is an RS/6000. I downloaded
jakarta-tomcat-connectors-4.0.2-01-src.tar.gz from
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.3/src/
and unzipped/untarred it and found mod_jk.c under

....-01-src/jk/native/apache-1.3/

The related jk_*.c files were found under

....-01-src/jk/native/common/

Anyway, the various Jakarta-supplied build scripts were essentially
useless because the path names in my setup (which I inherited) are
different from any assumed to be available in the scripts. Since
mod_jk.so is just a shared object - which I have previous successful
experience building in the AIX environment - I decided to try
formulating a Makefile similar to the previous ones I have
used. I also got guidance from some IHS documentation which talked
about building DSOs for use with IHS. At any rate I think I got most
of the paths right because the compiler (IBM VACPP/xlC 5.0.2) did
not complain about any include files not being found. Of all the
jk_*.c files, together with mod_jk.c, only two files did not compile:
jk_jni_worker.c and jk_md5.c. The relevant error messages for the
former were as follows:

        xlc_r -qflag=i:w -qsuppress=1506-342  -DUSE_APACHE_MD5  -I ..
/jk/native/common  -I /vol/Java/aix/J1.3.0/java130/include  -I
/usr/HTTPServer/include -c jk_jni_worker.c
"jk_jni_worker.c", line 745.28: 1506-068 (E) Operation between types
"long(*)(const struct JNIInvokeInterface_***,const struct
JNINativeInterface_***,void*)" and "void*" is not allowed.
"jk_jni_worker.c", line 746.43: 1506-068 (E) Operation between types
"long(*)(void*)" and "void*" is not allowed.
"jk_jni_worker.c", line 747.34: 1506-068 (E) Operation between types
"long(*)(const struct JNIInvokeInterface_***,int,int*)" and "void*" is not
allowed.

and the error messages for the latter were:

        xlc_r -qflag=i:w -qsuppress=1506-342  -DUSE_APACHE_MD5  -I ..
/jk/native/common  -I /vol/Java/aix/J1.3.0/java130/include  -I
/usr/HTTPServer/include -c jk_md5.c
"jk_md5.c", line 500.36: 1506-280 (E) Function argument assignment between
types "const char*" and "const unsigned char*" is not allowed.
"jk_md5.c", line 503.49: 1506-280 (E) Function argument assignment between
types "const char*" and "const unsigned char*" is not allowed.
"jk_md5.c", line 505.17: 1506-280 (E) Function argument assignment between
types "unsigned char*" and "char*" is not allowed.
"jk_md5.c", line 506.30: 1506-280 (E) Function argument assignment between
types "unsigned char*" and "char*" is not allowed.

These errors could be the result of using the wrong file versions,
of missing or wrong macro definitions, etc. Or they could just be
actual code errors. If anyone has thoughts or suggestions that may
help to cure these C-language problems, I would sure like to hear them.

Thanks in advance.

Bernie Landman