Dear mod_perl and mod_ssl folks, (I'd like to send this to apache folks too but www.apache.org seems to be down and I can't find an email address for bug reports.) I recently had occasion to try to build an apache with mod_perl statically linked, and mod_ssl (and all other modules) dynamically linked. I needed to do this because mod_perl warned me that linking dynamically would cause problems with my perl, because I had used the perl malloc library (how depressing). Unfortunately it was impractical for me to recompile the perl being used on all the machines where the apache binary needs to be used. There are conflicting instructions in mod_perl and mod_ssl for how to do both of them together, and neither anticipates linking the one statically and the other dynamically. I include the commands I ran below, for whatever benefit they may be to others. Unfortunately, a change to someone's source is required to make it work. Attempting to start up the resulting apache (for example, via the make test command in mod_perl) resulted in: Cannot load /src/mod_perl-1.24_01/t/../../apache_1.3.14/src/modules/ssl/libssl.so into server: ld.so.1: ../apache_1.3.14/src/httpd: fatal: relocation error: file /src/mod_perl-1.24_01/t/../../apache_1.3.14/src/modules/ssl/libssl.so: symbol __eprintf: referenced symbol not found Well. __eprintf, as you probably know, is part of libgcc.a, but it does not exist in any dynamic library. Therefore it won't be found by the dynamic loader. The only solution I could see to this was to force __eprintf to be included in the static link. I did this by adding the following two lines to the apache/src/buildmark.c, but some mod_perl C file would be a (much) better place: extern void __eprintf (); static void (*horrible) () = __eprintf; It also obviously needs some #ifdef's to avoid losing if it's compiled under some other compile which does not define __eprintf. If you could deal with this in some future release(s), that would be great. If we could just eliminate __eprintf forever, that would be the best of all :). Anyway, I hope this will at least help someone avoid the same struggle I went through. I found nothing especially relevant on the web or dejanews. If there's a better way, I'd appreciate knowing about it. Thanks, [EMAIL PROTECTED] Environment info: apache 1.3.14 mod_ssl 2.7.1-1.3.14 mod_perl 1.24_01 perl 5.005_03 openssl 0.9.6 Build commands: # openssl is first. http://www.openssl.org/source/openssl-0.9.6.tar.gz ./config --prefix=/usr/local/openssl-096 --openssldir=/usr/local/openssl-096 make make test make install make clean # get clean distribution of apache; don't configure or build it, just unpack. http://httpd.apache.org/dist/apache_1.3.14.tar.gz tar xzf apache*.tar.gz # get distribution of mod_ssl http://www.modssl.org/source/mod_ssl-2.7.1-1.3.14.tar.gz tar xzf mod_ssl*.tar.gz # configure in mod_ssl cd mod_ssl-* configure --with-apache=../apache_1.3.14 cd .. # get distribution of mod_perl http://perl.apache.org/dist/mod_perl-1.24.tar.gz tar xzf mod_perl*.tar.gz # in apache/src/buildmark.c, add two lines after the #include's. # otherwise, get __eprintf undefined when httpd starts up. extern void __eprintf (); static void (*horrible) () = __eprintf; # configure in mod_perl # we must link mod_perl statically to avoid runtime malloc bugs in # perl malloc, or so mod_perl says. cd mod_perl-* perl Makefile.PL USE_APACI=1 EVERYTHING=1 SSL_BASE=/usr/local/openssl APACHE_PREFIX=/l/apache-1.3.14-`date +%Y%m%d` APACI_ARGS=--with-layout=Apache,--enable-module=all,--enable-shared=max,--disable-module=auth_db,--disable-shared=perl # make and test, including httpd startup (still in mod_perl) make test ---- Full output of perl -V: Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration: Platform: osname=solaris, osvers=2.7, archname=sun4-solaris uname='sunos rocks.f7.net 5.7 generic sun4u sparc ' hint=previous, useposix=true, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef Compiler: cc='cc', optimize='-g', gccversion=2.8.1 cppflags='-DDEBUGGING' ccflags ='-DDEBUGGING' stdchar='char', d_stdstdio=define, usevfork=false intsize=4, longsize=4, ptrsize=4, doublesize=8 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 alignbytes=8, usemymalloc=y, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib /usr/ccs/lib libs=-lsocket -lnsl -ldb -ldl -lm -lc -lcrypt libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' ' cccdlflags='-fPIC', lddlflags='-G -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: DEBUGGING Built under solaris Compiled at Jun 6 1999 18:55:00 @INC: /usr/local/lib/perl5/5.00503/sun4-solaris /usr/local/lib/perl5/5.00503 /usr/local/lib/perl5/site_perl/5.005/sun4-solaris /usr/local/lib/perl5/site_perl/5.005 .