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

[prev] [thread] [next] [Date index for 2005/01/10]

From: Nick ***
Subject: Re: mod_perl.c:61: `my_perl' undeclared under Cygwin
Date: 22:20 on 10 Jan 2005
>No, the standard apache 1.3.xx build process doesn't build libhttpd.dll by default. 
>It only builds it with the --enable-rule=SHARED_CORE configuration option. With this I manage to build MP 1.xx. 
>Now about MP2 - as I said I currently can not build Apache 2 with enable-rule=SHARED_CORE, that's why I asked if anyone knows whether this option is still valid for Apache 2.0.xx.
>I'll test your patch when I manage to make Apache2 to build libhttpd.dll under cygwin. I see that apache2's win32 binary distribution has libhttpd.dll in the bin dir, so there must be a way for cygwin. 
 
>>Also, is there a libhttpd.lib installed, perhaps under 
>>$APACHE2/lib/, created either with a "standard" or 
>>"non-standard" build? If not, is there a library there 
>>with the same name but a different extension? 

>No, there is no .a or .dll.a with both builds (we are talking about Apache 1.3.xx here).
>Under cygwin it's .a or .dll.a and not .lib. But you are not required to link against .a or .dll.a - if you have the dll you can link directly to it like it's a static lib. 


No luck guys :(
Seems there is no way to build libhttpd.dll and no way to link against it. Even when I try to compile apache 2 with --enable-shared=most it can not build it's own modules. I suggest to disable or warn that currently the dynamic build under cygwin doesn't work. Maybe better days will come with apache 2.2.

I decided to dig more into the static build.
Here mod_perl.a links fine in the httpd, but the problem comes with the dllexport in APR/Base64 issue. (gcc 3.3.3 binary is not released yet).
The problematic lines lay in xs/APR/Base64/APR__Base64.h:

static XS(MPXS_apr_base64_encode)
{

and 

static XS(MPXS_apr_base64_decode)
{

When I change 'static' to 'const' (I don't know how good this is, but it works for now). With some warnings like 
'Base64.xs: warning: passing arg 3 of `Perl_newXS' from incompatible pointer type'
the file gets compiled, but there is another problem again when linking:)
The same undefined symbol errors like when linking mod_perl.so.
But MP_STATIC_EXTS=1 comes to help. (Suggest that this option becomes a default when building static mp2 under cygwin or at least warn that it should be set).

BTW, I had to edit some more files in xs/ dir, find every appearance
of static XS(MPXS_* and change it to const XS(MPXS_*

The first problem I see when creating mod_perl.a is this:
ar: 'Apache_URI_URI.o': No such file
Apache_URI_URI.o is not built. Is this a bug?
The process continues and tries to create the httpd executable, but dies with this error:

/usr/src/mp2/src/modules/perl/mod_perl.a(modperl_xsinit.o)(.text+0x486):modperl_
xsinit.c: undefined reference to `_boot_Apache__URI'
Info: resolving _PL_vtbl_env by linking to __imp__PL_vtbl_env (auto-import)
Info: resolving _PL_vtbl_envelem by linking to __imp__PL_vtbl_envelem (auto-impo
rt)
Info: resolving _PL_ppaddr by linking to __imp__PL_ppaddr (auto-import)
collect2: ld returned 1 exit status
make[2]: *** [httpd] Error 1
make[2]: Leaving directory `/usr/src/httpd'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/src/httpd'
make: *** [ap_build] Error 2

I think it's related to the missing Apache_URI_URI.o

P.S. this is RC3

-----------------------------------------------------------------
Активирайте SMS известяване за получено писмо - http://promo.abv.bg/new_sms.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
sdfgsd sergserg 17:32 on 14 Dec 2004

Re: mod_perl.c:61: `my_perl' undeclared under Cygwin
Nick *** 22:20 on 10 Jan 2005

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