This is part of The Pile, a partial archive of some open source mailing lists and newsgroups.
Subject: mod-perl as DSO (solaris) From: Ricardo Stella <stella@rider.edu> Date: Tue, 26 Sep 2000 15:00:50 -0400 Solaris 2.8 Apache 1.3.12 GCC 2.95.2 Perl 5.6.0 Enterprise 250 (64bitish) Modperl 1.24 I can't get modperl compiled as a DSO neither via the 'flexible-method' nor the APXS method. The first method, seg faults. The second method won't configure, stating I should not build mod-perl as a DSO or compile perl with -Ubincompat5005. My current perl was compiled with bincompat5005 (perl -V:bincompat5005 shows as 'defined') So, is this working at all ??? Searching the archives, all I found was related to 1.23. I also tried specifically setting CFLAGS=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing when compiling apache, but did not help. === Subject: Re: mod-perl as DSO (solaris) From: Ricardo Stella <stella@rider.edu> Date: Fri, 29 Sep 2000 11:35:02 -0400 Doug MacEachern wrote: > > On Tue, 26 Sep 2000, Ricardo Stella wrote: > > > Solaris 2.8 > > Apache 1.3.12 > > GCC 2.95.2 > > Perl 5.6.0 > > Enterprise 250 (64bitish) > > Modperl 1.24 > > > > I can't get modperl compiled as a DSO neither via the 'flexible-method' > > nor the APXS method. > > > > The first method, seg faults. > > > > The second method won't configure, stating I should not build mod-perl > > as a DSO or compile perl with -Ubincompat5005. > > > > My current perl was compiled with bincompat5005 (perl -V:bincompat5005 > > shows as 'defined') > > exactly, -Ubincompat5005 will _un_ define bincompat5005, perl > -V:bincompat5005 should report: bincompat5005='undef'; > > this is a requirement for solaris (or any Perl where Perl's malloc is > used, rather than system malloc) , because Perl's malloc with > bincompat5005 will pollute malloc() and free() into the main server, then > when mod_perl's dso is closed (it is closed/re-opened at startup), the > everything in the main server using free/malloc now has a function pointer > into la-la land. when you turn off bincompat5005, then Perl's malloc/free > are namespace protected, so only Perl uses Perl's malloc. More testing but still problems... First I downloaded GCC and make from sunfreeware.com just in case Sun's versions are messed up (this is the ones distributed with Solaris 8). I built apache clean first with the following criteria: CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing" \ ./configure \ "--with-layout=Apache" \ "--prefix=/usr/local/apache2" \ "--enable-shared=max" \ "--enable-module=most" \ "--enable-rule=SHARED_CORE" \ "$@" Then, I built perl clean with -Ubincompat5005. I did build a shared perl though. Then I built mod perl via APXS as a DSO with: $ perl Makefile.PL \ USE_APXS=1 \ WITH_APXS=/path/to/bin/apxs \ EVERYTHING=1 \ [...] $ make $ make test $ make install Note that make test does not work with APXS (docs should be updated !). But I got the followin errors: First, with the default http.conf 'apachectl configtest' fails with: Syntax error on line 212 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/libexec/mod_negotiation.so into server: ld.so.1: /usr/local/apache2/bin/httpd: fatal: relocation error: file /usr/local/apache2/libexec/mod_negotiation.so: symbol __floatdisf: referenced symbol not found Disabling mod_negotiation: Syntax error on line 231 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/libexec/libproxy.so into server: ld.so.1: /usr/local/apache2/bin/httpd: fatal: relocation error: file /usr/local/apache2/libexec/libproxy.so: symbol __floatdisf: referenced symbol not found And finally, disabling mod_proxy: Syntax error on line 238 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/libexec/libperl.so into server: ld.so.1: /usr/local/apache2/bin/httpd: fatal: relocation error: file /usr/local/apache2/libexec/libperl.so: symbol Perl_free_tmps: referenced symbol not found So what now ??? HELP !!! === Subject: Re: mod-perl as DSO (solaris) From: Ricardo Stella <stella@rider.edu> Date: Fri, 29 Sep 2000 12:56:53 -0400 Might have figured out the problem, and it might be an apache issue dealing with largefiles: I compiled apache cleanly as: ./configure \ "--with-layout=Apache" \ "--prefix=/usr/local/apache2" \ "--enable-module=most" \ "--enable-shared=max" \ This worked. 'apachectl configtest' did not complain. Then I compiled mod_perl as: $ perl Makefile.PL \ USE_APXS=1 \ WITH_APXS=/path/to/bin/apxs \ EVERYTHING=1 \ And I got the following error message: Your Perl is uselargefiles enabled, but Apache is not, suggestions: *) Rebuild Apache with CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" *) Rebuild Perl with Configure -Uuselargefiles *) Let mod_perl build Apache (USE_DSO=1 instead of USE_APXS=1) So I cleand and compiled apache again, but enabling these CFLAGS. Apache chocked on mod_negotiation. Any ideas now ??? === Subject: Re: mod-perl as DSO (solaris) From: Doug MacEachern <dougm@covalent.net> Date: Fri, 29 Sep 2000 13:33:13 -0700 (PDT) On Fri, 29 Sep 2000, Ricardo Stella wrote: > *) Rebuild Perl with Configure -Uuselargefiles if you do this and re-build Apache without the extra CFLAGS, that problem will go away. === === Subject: Re: Building modperl as a DSO in Apache_1.3.12 From: Doug MacEachern <dougm@covalent.net> Date: Tue, 26 Sep 2000 12:56:07 -0700 (PDT) On Tue, 22 Aug 2000, Kairam, Raj wrote: > I am trying to build modperl ( mod_perl-1.24 ) as DSO in to Apache ( > apache_1.3.12 ) on a host running HP-UX 11.0 > ld: Unrecognized argument: -Wl -E > ld: Usage: ld flags ... files ... > The output of make is captured in the following attachment > <<make_0818.txt>> > The last line in the above file indicates the 'ld' command and the arguments > '-Wl -E' are in that long line halfway. > > When I look at the generated Makefile, I see the two lines > CCCDLFLAGS = +z > CCDLFLAGS = -Wl, E -Wl,-B,deferred > > How can I avoid this error ?. Any of you working with mod_perl on a HP-UX > box encountered this situation ?. your 'perl -V' would help alot, but i'm guessing if you run 'make LD=cc', that would fix the problem. ===