Rainer Jung wrote:
Hi Chris,
ChrisS schrieb:
I am trying to compile mod_jk current on Solaris 10 x86 (intel).
After spending a huge amount of time, I finally get it to compile and
this is the output I receive.
bash-3.00#./configure --with-apxs=/usr/apache/bin/apxs
checking build system type... i386-pc-solaris2.10
checking host system type... i386-pc-solaris2.10
checking target system type... i386-pc-solaris2.10
...
building connector for "apache-1.3"
checking for gcc... /usr/sfw/bin/gcc
Yu have gcc installed, and configure finds it as the first compiler it
is looking for. It will use gcc to detect, how the build system should
optimise itself to your environment.
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
...
configure: WARNING: Using CC from environment:
configure: WARNING: CC="/usr/sfw/bin/gcc"
configure: WARNING: instead of CC from apxs:
configure: WARNING: CC="cc"
configure: WARNING: If "make" throws an error of the form
configure: WARNING: "libtool: compile: unable to infer tagged
configuration"configure: WARNING: "libtool: compile: specify a
tag with `--tag'"
configure: WARNING: try running configure without setting CC,
configure: WARNING: or at least CC should start with "cc"
bash-3.00#
The apxs installed with your httpd tells us, that you httpd has been
compiled with a different toolchain. it wasn't produced with a gcc
based toolchain, but instead with Sun tools. I guess, the whole httpd
is the one coming with Solaris.
I have not been able to figure out the warnings on this as of yet and
I have tried setting various enviroment variables to combat it, all
to no avail.
This is the output from my gmake attempt:
bash-3.00#gmake
Making all in common
...
gmake[1]: Entering directory `/www/connectors/jk/native/apache-1.3'
/bin/sh ../libtool --mode=link /usr/sfw/bin/gcc -o mod_jk.la -module
-rpath /usr/apache/libexec mod_jk.lo ../common/jk_ajp12_worker.lo
../common/jk_connect.lo ../common/jk_msg_buff.lo ../common/jk_util.lo
../common/jk_ajp13.lo ../common/jk_pool.lo ../common/jk_worker.lo
../common/jk_ajp13_worker.lo ../common/jk_lb_worker.lo
../common/jk_sockbuf.lo ../common/jk_map.lo
../common/jk_uri_worker_map.lo ../common/jk_ajp14.lo
../common/jk_ajp14_worker.lo ../common/jk_md5.lo ../common/jk_shm.lo
../common/jk_ajp_common.lo ../common/jk_context.lo
../common/jk_url.lo ../common/jk_status.lo
/usr/sfw/bin/gcc -shared -Wl,-h -Wl,mod_jk.so.0 -o
.libs/mod_jk.so.0.0.0 .libs/mod_jk.o
../common/.libs/jk_ajp12_worker.o ../common/.libs/jk_connect.o
../common/.libs/jk_msg_buff.o ../common/.libs/jk_util.o
../common/.libs/jk_ajp13.o ../common/.libs/jk_pool.o
../common/.libs/jk_worker.o ../common/.libs/jk_ajp13_worker.o
../common/.libs/jk_lb_worker.o ../common/.libs/jk_sockbuf.o
../common/.libs/jk_map.o ../common/.libs/jk_uri_worker_map.o
../common/.libs/jk_ajp14.o ../common/.libs/jk_ajp14_worker.o
../common/.libs/jk_md5.o ../common/.libs/jk_shm.o
../common/.libs/jk_ajp_common.o ../common/.libs/jk_context.o
../common/.libs/jk_url.o ../common/.libs/jk_status.o -lc
gcc: .libs/mod_jk.o: No such file or directory
gcc: ../common/.libs/jk_ajp12_worker.o: No such file or directory
gcc: ../common/.libs/jk_connect.o: No such file or directory
...
gmake[1]: *** [mod_jk.la] Error 1
gmake[1]: Leaving directory `/www/connectors/jk/native/apache-1.3'
gmake: *** [all-recursive] Error 1
bash-3.00#
The module build system for mod_jk is based on the standard module
build system for Apache httpd. The philosophy is: the module asks
httpd how it got build and tries to use the same commands/flags in
order to make the module most likely binary compatible with the web
server.
The facility to enable such a build system is apxs, which comes with
htpd, and which can be asked about the original build flags used for
httpd.
Our mod_jk configure asks apxs about the right flags, but then you are
actually using a totally different toolchain (gcc based), than the one
used to build apache httpd (Sun Studio). That's a hard and unstable
way to go. You could try to write a gcc wraper named cc which tries to
tralsate all used cc flags to gcc ones, but that's more an experiment
than building production software.
So you should either: get the same toolchain, that was used to build
your Apache httpd and use that toolchain to build your module. In your
case: install Sun studio and take care, that configure does find
/usr/ccs/bin/cc and nor /usr/sfw/bin/gcc. It could well be, that it's
not enough to put /usr/ccs/bin in front f /zsr/sfw/bin in the PATH,
but that you would furthermore need to temporarily remove/rename gcc,
s.t. configure doesn't find it. Removing the whole /usr/sfw/bin from
the PATH might be to string, because e.g. you'll need gmake form that
path.
Or: you switch over to the gcc (/usr/sfw/) toolchain completely, which
would mean starting with building Apache httpd with this toolchain (or
find some reliable build somewhere).
HTH
Rainer
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Rainer I am really happy that you have responded and feel that little
more confident after reading some of your previous postings. There was
one in relation to header files SUNWhea. I am happy to tell you that the
compilation is working and that gmake builds with no problems.
I installed Sun Studio 11 and included it first in the $PATH env
variable. This cleaned up the nasty warnings about CC. Then I built it
with: gmake and then gmake clean this was also successful. Libtool was
then used to pass the mod_jk.so file to its location in this case:
/www/apache/libexec
I do however have one problem and it is a biggy. LoadModule along with
LoadFile(testing) will not load the module into my 1.3.39 dist. The
error message thrown is this:
../bin/apachectl start
Syntax error on line 237 of /www/apache/conf/httpd.conf:
Cannot load /www/connectors/jk/native/apache-1.3/mod_jk.so into
server:ld.so.1: libhttpd.ep: fatal: relocation error: file
/www/connectors/jk/native/apache-1.3/mod_jk.so: symbol ap_ctx_get:
referenced symbol not found
../bin/apachectl start: httpd could not be started
Please could you help me, I have tried compiling the Apache Dist with:
./configure --prefix=/www/apache
--enable-module=most
--enable-shared=max
--enable-rule=SHARED_CORE
$ make
$ make install
Believing that this would resolve my symbol issue. Symbols are in the
table this was shown with: nm /www/apache/bin/httpd but none for
ap_ctx_get
Kindest Regards
ps Thanks for all the help so far guys!!
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]