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:[EMAIL PROTECTED] 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



Reply via email to