Re: mod_perl.c:61: `my_perl' undeclared under Cygwin

[prev] [thread] [next] [Date index for 2004/12/14]

From: Stas Bekman
Subject: Re: mod_perl.c:61: `my_perl' undeclared under Cygwin
Date: 00:22 on 14 Dec 2004
sdfgsd sergserg wrote:
> I compiled perl 5.8.5 succesfuly and tried to build RC1 against 5.8.5.
> This time there is no such error, 

Good, so cygwin perl 5.8.0 is probably borked.

> but there is another problem:
[..]
> after this is executed I get many many errors like these: 
> modperl_debug.lo(.text+0x6e):modperl_debug.c: undefined reference to
> `_apr_psprintf' 
> modperl_common_util.lo(.text+0x33b):modperl_common_util.c: undefined
> reference to `_apr_palloc' 
> modperl_common_log.lo(.text+0x68):modperl_common_log.c: undefined
> reference to `_apr_file_printf' 
> modperl_hooks.lo(.text+0x316):modperl_hooks.c: undefined reference to
> `_ap_hook_process_connection'
> 
> 
> ... and so on until I get to:
> 
> 
> collect2: ld returned 1 exit status perlld: *** system() failed to
> execute gcc -shared -o  mod_perl.dll -Wl,--out-implib=libmod_perl.dll.a
> -Wl,--export-all -symbols -Wl,--enable-auto-import -Wl,--stack,8388608
> \ -L/usr/local/lib mod_perl.lo modperl_interp.lo modperl_tipool.lo
[...]
> modperl_flags.lo modperl_xsinit.lo modperl_exports.lo -L/usr/local/lib
> /u sr/local/lib/perl5/5.8.5/cygwin/auto/DynaLoader/DynaLoader.a
> -L/usr/local/lib/perl5/5.8.5/cygwin/CORE -lperl -lcrypt -lgdbm_compat

the loader here tries to resolve symbols which should be resolved at 
run-time. since mod_perl.so doesn't link against libapr and libaprutil you 
get those errors. Those symbols are resolved inside httpd which links 
against those 2 libs. And when mod_perl.so is loaded libapr and libaprutil 
are already loaded.

Last time I had to do a similar workaround for AIX. Please see this 
section in lib/Apache/Build.pm and see if you can adjust the build to do 
something similar on cygwin. I'm not familiar with the linker/loader on 
that platform to tell you exactly what needs to be done.

     if (AIX) {
         my $Wl = $self->ldopts_prefix;

         # it's useless to import symbols from libperl.so this way,
         # because perl.exp is incomplete. a better way is to link
         # against -lperl which has all the symbols
         $val =~ s|${Wl}-bI:\$\(PERL_INC\)/perl\.exp||;
         # also in the case of Makefile.modperl PERL_INC is defined

         # this works with at least ld(1) on powerpc-ibm-aix5.1.0.0:
         # -berok ignores symbols resolution problems (they will be
         #        resolved at run-time
         # -brtl prepares the object for run-time loading
         # LDFLAGS already inserts -brtl
         $val .= " ${Wl}-berok";
         # XXX: instead of -berok, could make sure that we have:
         #   -Lpath/to/CORE -lperl
         #   -bI:$path/apr.exp -bI:$path/aprutil.exp -bI:$path/httpd.exp
         #   -bI:$path/modperl_*.exp
         # - don't import modperl_*.exp in Makefile.modperl which
         #   exports -bE:$path/modperl_*.exp
         # - can't rely on -bI:$path/perl.exp, because it's incomplete,
         #   use -lperl instead
         # - the issue with using apr/aprutil/httpd.exp is to pick the
         #   right path if httpd wasn't yet installed
     }

     $val;
}

        -- 
        __________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@xxxxxx.xxx http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html

mod_perl.c:61: `my_perl' undeclared under Cygwin
sdfgsd sergserg 11:44 on 13 Dec 2004

Re: mod_perl.c:61: `my_perl' undeclared under Cygwin
sdfgsd sergserg 15:00 on 13 Dec 2004

Re: mod_perl.c:61: `my_perl' undeclared under Cygwin
Stas Bekman 00:22 on 14 Dec 2004

Re: mod_perl.c:61: `my_perl' undeclared under Cygwin
sdfgsd sergserg 17:32 on 14 Dec 2004

Re: mod_perl.c:61: `my_perl' undeclared under Cygwin
Philippe M. Chiasson 04:31 on 31 Jan 2005

Generated at 14:43 on 11 Apr 2005 by mariachi v0.52