You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Morten Bjørnsvik <mo...@experian-da.no> on 2010/01/11 16:23:41 UTC

unable to compile perl under perl 5.10.1

Hi all
I'm unable to compile mod_perl-2.0.x from svn(trunk 2.0.5-dev) or cpan(2.0.4) on perl 5.10.1, do anyone have some
black belt options that make it works, I believed the -fPIC now is embedded in the -Dusethreads, because
I see it appear lots of places in the perl compile output

I've tried compiling perl 5.10.1 with the following options

./Configure -des -A ccflags="-O2 -DPERL_USE_SAFE_PUTENV -fPIC" -Dusethreads -Duse64bitall \
      -Dprefix=/opt/perl -Dinstallprefix=/opt/perl

./Configure -des -A ccflags=-DPERL_USE_SAFE_PUTENV -Accflags="-fPIC" -Dusethreads \
      -Duse64bitall -Dprefix=/opt/perl -Dinstallprefix=/opt/perl

./Configure -des -A -Dusethreads -Duse64bitall -Dinstallprefix=/opt/perl

perl always compiles and seem to work fine with other modules.

Mod_perl2.0 build:
Both cpan and and the svn checkout version, shows the same error:
build cmd: cd '/usr/tmp/cpan_extract/mod_perl-2.0'; /opt/perl/bin/perl Makefile.PL MP_APXS=/opt/apache/bin/apxs

cc -shared -O2 -L/usr/local/lib -fstack-protector \
         \
        mod_perl.lo modperl_interp.lo modperl_tipool.lo modperl_log.lo modperl_config.lo modperl_cmd.lo modperl_options.lo modperl_callback.lo modperl_handler.lo modperl_gtop.lo modperl_util.lo modperl_io.lo modperl_io_apache.lo modperl_filter.lo modperl_bucket.lo modperl_mgv.lo modperl_pcw.lo modperl_global.lo modperl_env.lo modperl_cgi.lo modperl_perl.lo modperl_perl_global.lo modperl_perl_pp.lo modperl_sys.lo modperl_module.lo modperl_svptr_table.lo modperl_const.lo modperl_constants.lo modperl_apache_compat.lo modperl_error.lo modperl_debug.lo modperl_common_util.lo modperl_common_log.lo modperl_hooks.lo modperl_directives.lo modperl_flags.lo modperl_xsinit.lo modperl_exports.lo  -Wl,-E  -fstack-protector -L/usr/local/lib  -L/opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE -lperl -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc \
        -o mod_perl.so
/usr/bin/ld: /opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE/libperl.a(op.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE/libperl.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[1]: *** [mod_perl.so] Error 1
make[1]: Leaving directory `/var/tmp/cpan_extract/mod_perl-2.0/src/modules/perl'
make: *** [modperl_lib] Error 2


Any ideas greatly appreciated.

Thanks
----------------------------------------------------------------
Morten Bjørnsvik, Experian Decision Analytics AS, Oslo, Norway
----------------------------------------------------------------



RE: unable to compile mod_perl under perl 5.10.1

Posted by Morten Bjørnsvik <mo...@experian-da.no>.
Hi again

I inspected the rpm spec file we use to build perl and found some errors setting it to default value

config_args='-des -A ccflags=-fPIC -Dprefix=/opt/perl -Dinstallprefix=/opt/perl'

Now mod_perl compiles fine, I will also try without threading based on your comments.
(I believed threads were more unstable but not slower).
We used 'use Thread;' in earlier version, but I could not find it in the code anymore.

Thanks again
for some excellent feedback.

--
MortenB



-----Original Message-----
From: Fred Moyer [mailto:fred@redhotpenguin.com] 
Sent: 12. januar 2010 09:22
To: Morten Bjørnsvik
Cc: mod_perl list
Subject: Re: unable to compile mod_perl under perl 5.10.1

Here's what's on my 5.8.8 with fPIC, I haven't tried 5.10.1 on 64 bit yet.

    cc='cc', ccflags ='-fPIC -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',

I'm not sure if the perl you showed me below has fpic configured.

I recommend that you compile a non-threaded version of perl though in
a separate installation location (with fpic configured of course), and
then build mod_perl from that.  I usually use /home/app_user/perl.
There are a couple of reasons to do this:

1) If you start using CPAN with an rpm based distribution such as
centos, then you will be installing modules that should be installed
via RPM.  The Fedora maintainer gave a note on this in a talk a couple
years ago at YAPC Chicago.

2) Single threaded perl binaries tend to be faster (~20%) and more
stable than threaded perl binaries.  I don't have the data to post,
but I did some perlbench comparisons a few years ago with 5.8.8.  This
may have changed with 5.10, but I would consider it unlikely.

3) You can ensure that you have fpic configured.


On Tue, Jan 12, 2010 at 12:11 AM, Morten Bjørnsvik
<mo...@experian-da.no> wrote:
> Hi Fred
>
> Thanks for the answer. getting correct -fPIC is probably the solution, but how?
>
> On perl 5.10.0 it turned up under config flags, but here it does not, but under cccdlflags in dynamic linking?
> There is probably some parsing in the Configure script that rearrange it.
>
> platform is CentOS 5.2 (latest patches)
>
> Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
>  Platform:
>    osname=linux, osvers=2.6.18-164.9.1.el5, archname=x86_64-linux-thread-multi
>    uname='linux mortenb5.secana.local 2.6.18-164.9.1.el5 #1 smp tue dec 15 20:57:57 est 2009 x86_64 x86_64 x86_64 gnulinux '
>    config_args='-des -A ccflags=-DPERL_USE_SAFE_PUTENV -Dusethreads -Dprefix=/opt/perl -Dinstallprefix=/opt/perl'
>    hint=recommended, useposix=true, d_sigaction=define
>    useithreads=define, usemultiplicity=define
>    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
>    use64bitint=define, use64bitall=define, uselongdouble=undef
>    usemymalloc=n, bincompat5005=undef
>  Compiler:
>    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
>    optimize='-O2',
>    cppflags='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
>    ccversion='', gccversion='4.1.2 20080704 (Red Hat 4.1.2-46)', gccosandvers=''
>    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
>    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
>    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
>    alignbytes=8, prototype=define
>  Linker and Libraries:
>    ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
>    libpth=/usr/local/lib /lib /usr/lib /lib64 /usr/lib64 /usr/local/lib64
>    libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
>    perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
>    libc=/lib/libc-2.5.so, so=so, useshrplib=false, libperl=libperl.a
>    gnulibc_version='2.5'
>  Dynamic Linking:
>    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
>    cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector'
>
>
> -----Original Message-----
> From: Fred Moyer [mailto:fred@redhotpenguin.com]
> Sent: 11. januar 2010 22:29
> To: Morten Bjørnsvik
> Cc: mod_perl list
> Subject: Re: unable to compile perl under perl 5.10.1
>
> Have you verified perl was actually compiled with fpic?  perl -V
>
> On Mon, Jan 11, 2010 at 7:23 AM, Morten Bjørnsvik
> <mo...@experian-da.no> wrote:
>> Hi all
>> I'm unable to compile mod_perl-2.0.x from svn(trunk 2.0.5-dev) or cpan(2.0.4) on perl 5.10.1, do anyone have some
>> black belt options that make it works, I believed the -fPIC now is embedded in the -Dusethreads, because
>> I see it appear lots of places in the perl compile output
>>
>> I've tried compiling perl 5.10.1 with the following options
>>
>> ./Configure -des -A ccflags="-O2 -DPERL_USE_SAFE_PUTENV -fPIC" -Dusethreads -Duse64bitall \
>>      -Dprefix=/opt/perl -Dinstallprefix=/opt/perl
>>
>> ./Configure -des -A ccflags=-DPERL_USE_SAFE_PUTENV -Accflags="-fPIC" -Dusethreads \
>>      -Duse64bitall -Dprefix=/opt/perl -Dinstallprefix=/opt/perl
>>
>> ./Configure -des -A -Dusethreads -Duse64bitall -Dinstallprefix=/opt/perl
>>
>> perl always compiles and seem to work fine with other modules.
>>
>> Mod_perl2.0 build:
>> Both cpan and and the svn checkout version, shows the same error:
>> build cmd: cd '/usr/tmp/cpan_extract/mod_perl-2.0'; /opt/perl/bin/perl Makefile.PL MP_APXS=/opt/apache/bin/apxs
>>
>> cc -shared -O2 -L/usr/local/lib -fstack-protector \
>>         \
>>        mod_perl.lo modperl_interp.lo modperl_tipool.lo modperl_log.lo modperl_config.lo modperl_cmd.lo modperl_options.lo modperl_callback.lo modperl_handler.lo modperl_gtop.lo modperl_util.lo modperl_io.lo modperl_io_apache.lo modperl_filter.lo modperl_bucket.lo modperl_mgv.lo modperl_pcw.lo modperl_global.lo modperl_env.lo modperl_cgi.lo modperl_perl.lo modperl_perl_global.lo modperl_perl_pp.lo modperl_sys.lo modperl_module.lo modperl_svptr_table.lo modperl_const.lo modperl_constants.lo modperl_apache_compat.lo modperl_error.lo modperl_debug.lo modperl_common_util.lo modperl_common_log.lo modperl_hooks.lo modperl_directives.lo modperl_flags.lo modperl_xsinit.lo modperl_exports.lo  -Wl,-E  -fstack-protector -L/usr/local/lib  -L/opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE -lperl -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc \
>>        -o mod_perl.so
>> /usr/bin/ld: /opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE/libperl.a(op.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
>> /opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE/libperl.a: could not read symbols: Bad value
>> collect2: ld returned 1 exit status
>> make[1]: *** [mod_perl.so] Error 1
>> make[1]: Leaving directory `/var/tmp/cpan_extract/mod_perl-2.0/src/modules/perl'
>> make: *** [modperl_lib] Error 2
>>
>>
>> Any ideas greatly appreciated.
>>
>> Thanks
>> ----------------------------------------------------------------
>> Morten Bjørnsvik, Experian Decision Analytics AS, Oslo, Norway
>> ----------------------------------------------------------------
>>
>>
>>
>

Re: unable to compile mod_perl under perl 5.10.1

Posted by Fred Moyer <fr...@redhotpenguin.com>.
Here's what's on my 5.8.8 with fPIC, I haven't tried 5.10.1 on 64 bit yet.

    cc='cc', ccflags ='-fPIC -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',

I'm not sure if the perl you showed me below has fpic configured.

I recommend that you compile a non-threaded version of perl though in
a separate installation location (with fpic configured of course), and
then build mod_perl from that.  I usually use /home/app_user/perl.
There are a couple of reasons to do this:

1) If you start using CPAN with an rpm based distribution such as
centos, then you will be installing modules that should be installed
via RPM.  The Fedora maintainer gave a note on this in a talk a couple
years ago at YAPC Chicago.

2) Single threaded perl binaries tend to be faster (~20%) and more
stable than threaded perl binaries.  I don't have the data to post,
but I did some perlbench comparisons a few years ago with 5.8.8.  This
may have changed with 5.10, but I would consider it unlikely.

3) You can ensure that you have fpic configured.


On Tue, Jan 12, 2010 at 12:11 AM, Morten Bjørnsvik
<mo...@experian-da.no> wrote:
> Hi Fred
>
> Thanks for the answer. getting correct -fPIC is probably the solution, but how?
>
> On perl 5.10.0 it turned up under config flags, but here it does not, but under cccdlflags in dynamic linking?
> There is probably some parsing in the Configure script that rearrange it.
>
> platform is CentOS 5.2 (latest patches)
>
> Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
>  Platform:
>    osname=linux, osvers=2.6.18-164.9.1.el5, archname=x86_64-linux-thread-multi
>    uname='linux mortenb5.secana.local 2.6.18-164.9.1.el5 #1 smp tue dec 15 20:57:57 est 2009 x86_64 x86_64 x86_64 gnulinux '
>    config_args='-des -A ccflags=-DPERL_USE_SAFE_PUTENV -Dusethreads -Dprefix=/opt/perl -Dinstallprefix=/opt/perl'
>    hint=recommended, useposix=true, d_sigaction=define
>    useithreads=define, usemultiplicity=define
>    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
>    use64bitint=define, use64bitall=define, uselongdouble=undef
>    usemymalloc=n, bincompat5005=undef
>  Compiler:
>    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
>    optimize='-O2',
>    cppflags='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
>    ccversion='', gccversion='4.1.2 20080704 (Red Hat 4.1.2-46)', gccosandvers=''
>    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
>    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
>    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
>    alignbytes=8, prototype=define
>  Linker and Libraries:
>    ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
>    libpth=/usr/local/lib /lib /usr/lib /lib64 /usr/lib64 /usr/local/lib64
>    libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
>    perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
>    libc=/lib/libc-2.5.so, so=so, useshrplib=false, libperl=libperl.a
>    gnulibc_version='2.5'
>  Dynamic Linking:
>    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
>    cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector'
>
>
> -----Original Message-----
> From: Fred Moyer [mailto:fred@redhotpenguin.com]
> Sent: 11. januar 2010 22:29
> To: Morten Bjørnsvik
> Cc: mod_perl list
> Subject: Re: unable to compile perl under perl 5.10.1
>
> Have you verified perl was actually compiled with fpic?  perl -V
>
> On Mon, Jan 11, 2010 at 7:23 AM, Morten Bjørnsvik
> <mo...@experian-da.no> wrote:
>> Hi all
>> I'm unable to compile mod_perl-2.0.x from svn(trunk 2.0.5-dev) or cpan(2.0.4) on perl 5.10.1, do anyone have some
>> black belt options that make it works, I believed the -fPIC now is embedded in the -Dusethreads, because
>> I see it appear lots of places in the perl compile output
>>
>> I've tried compiling perl 5.10.1 with the following options
>>
>> ./Configure -des -A ccflags="-O2 -DPERL_USE_SAFE_PUTENV -fPIC" -Dusethreads -Duse64bitall \
>>      -Dprefix=/opt/perl -Dinstallprefix=/opt/perl
>>
>> ./Configure -des -A ccflags=-DPERL_USE_SAFE_PUTENV -Accflags="-fPIC" -Dusethreads \
>>      -Duse64bitall -Dprefix=/opt/perl -Dinstallprefix=/opt/perl
>>
>> ./Configure -des -A -Dusethreads -Duse64bitall -Dinstallprefix=/opt/perl
>>
>> perl always compiles and seem to work fine with other modules.
>>
>> Mod_perl2.0 build:
>> Both cpan and and the svn checkout version, shows the same error:
>> build cmd: cd '/usr/tmp/cpan_extract/mod_perl-2.0'; /opt/perl/bin/perl Makefile.PL MP_APXS=/opt/apache/bin/apxs
>>
>> cc -shared -O2 -L/usr/local/lib -fstack-protector \
>>         \
>>        mod_perl.lo modperl_interp.lo modperl_tipool.lo modperl_log.lo modperl_config.lo modperl_cmd.lo modperl_options.lo modperl_callback.lo modperl_handler.lo modperl_gtop.lo modperl_util.lo modperl_io.lo modperl_io_apache.lo modperl_filter.lo modperl_bucket.lo modperl_mgv.lo modperl_pcw.lo modperl_global.lo modperl_env.lo modperl_cgi.lo modperl_perl.lo modperl_perl_global.lo modperl_perl_pp.lo modperl_sys.lo modperl_module.lo modperl_svptr_table.lo modperl_const.lo modperl_constants.lo modperl_apache_compat.lo modperl_error.lo modperl_debug.lo modperl_common_util.lo modperl_common_log.lo modperl_hooks.lo modperl_directives.lo modperl_flags.lo modperl_xsinit.lo modperl_exports.lo  -Wl,-E  -fstack-protector -L/usr/local/lib  -L/opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE -lperl -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc \
>>        -o mod_perl.so
>> /usr/bin/ld: /opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE/libperl.a(op.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
>> /opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE/libperl.a: could not read symbols: Bad value
>> collect2: ld returned 1 exit status
>> make[1]: *** [mod_perl.so] Error 1
>> make[1]: Leaving directory `/var/tmp/cpan_extract/mod_perl-2.0/src/modules/perl'
>> make: *** [modperl_lib] Error 2
>>
>>
>> Any ideas greatly appreciated.
>>
>> Thanks
>> ----------------------------------------------------------------
>> Morten Bjørnsvik, Experian Decision Analytics AS, Oslo, Norway
>> ----------------------------------------------------------------
>>
>>
>>
>

RE: unable to compile mod_perl under perl 5.10.1

Posted by Morten Bjørnsvik <mo...@experian-da.no>.
Hi Fred

Thanks for the answer. getting correct -fPIC is probably the solution, but how?

On perl 5.10.0 it turned up under config flags, but here it does not, but under cccdlflags in dynamic linking?
There is probably some parsing in the Configure script that rearrange it.

platform is CentOS 5.2 (latest patches)

Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
  Platform:
    osname=linux, osvers=2.6.18-164.9.1.el5, archname=x86_64-linux-thread-multi
    uname='linux mortenb5.secana.local 2.6.18-164.9.1.el5 #1 smp tue dec 15 20:57:57 est 2009 x86_64 x86_64 x86_64 gnulinux '
    config_args='-des -A ccflags=-DPERL_USE_SAFE_PUTENV -Dusethreads -Dprefix=/opt/perl -Dinstallprefix=/opt/perl'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.1.2 20080704 (Red Hat 4.1.2-46)', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib /lib64 /usr/lib64 /usr/local/lib64
    libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
    perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    libc=/lib/libc-2.5.so, so=so, useshrplib=false, libperl=libperl.a
    gnulibc_version='2.5'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector'


-----Original Message-----
From: Fred Moyer [mailto:fred@redhotpenguin.com] 
Sent: 11. januar 2010 22:29
To: Morten Bjørnsvik
Cc: mod_perl list
Subject: Re: unable to compile perl under perl 5.10.1

Have you verified perl was actually compiled with fpic?  perl -V

On Mon, Jan 11, 2010 at 7:23 AM, Morten Bjørnsvik
<mo...@experian-da.no> wrote:
> Hi all
> I'm unable to compile mod_perl-2.0.x from svn(trunk 2.0.5-dev) or cpan(2.0.4) on perl 5.10.1, do anyone have some
> black belt options that make it works, I believed the -fPIC now is embedded in the -Dusethreads, because
> I see it appear lots of places in the perl compile output
>
> I've tried compiling perl 5.10.1 with the following options
>
> ./Configure -des -A ccflags="-O2 -DPERL_USE_SAFE_PUTENV -fPIC" -Dusethreads -Duse64bitall \
>      -Dprefix=/opt/perl -Dinstallprefix=/opt/perl
>
> ./Configure -des -A ccflags=-DPERL_USE_SAFE_PUTENV -Accflags="-fPIC" -Dusethreads \
>      -Duse64bitall -Dprefix=/opt/perl -Dinstallprefix=/opt/perl
>
> ./Configure -des -A -Dusethreads -Duse64bitall -Dinstallprefix=/opt/perl
>
> perl always compiles and seem to work fine with other modules.
>
> Mod_perl2.0 build:
> Both cpan and and the svn checkout version, shows the same error:
> build cmd: cd '/usr/tmp/cpan_extract/mod_perl-2.0'; /opt/perl/bin/perl Makefile.PL MP_APXS=/opt/apache/bin/apxs
>
> cc -shared -O2 -L/usr/local/lib -fstack-protector \
>         \
>        mod_perl.lo modperl_interp.lo modperl_tipool.lo modperl_log.lo modperl_config.lo modperl_cmd.lo modperl_options.lo modperl_callback.lo modperl_handler.lo modperl_gtop.lo modperl_util.lo modperl_io.lo modperl_io_apache.lo modperl_filter.lo modperl_bucket.lo modperl_mgv.lo modperl_pcw.lo modperl_global.lo modperl_env.lo modperl_cgi.lo modperl_perl.lo modperl_perl_global.lo modperl_perl_pp.lo modperl_sys.lo modperl_module.lo modperl_svptr_table.lo modperl_const.lo modperl_constants.lo modperl_apache_compat.lo modperl_error.lo modperl_debug.lo modperl_common_util.lo modperl_common_log.lo modperl_hooks.lo modperl_directives.lo modperl_flags.lo modperl_xsinit.lo modperl_exports.lo  -Wl,-E  -fstack-protector -L/usr/local/lib  -L/opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE -lperl -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc \
>        -o mod_perl.so
> /usr/bin/ld: /opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE/libperl.a(op.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
> /opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE/libperl.a: could not read symbols: Bad value
> collect2: ld returned 1 exit status
> make[1]: *** [mod_perl.so] Error 1
> make[1]: Leaving directory `/var/tmp/cpan_extract/mod_perl-2.0/src/modules/perl'
> make: *** [modperl_lib] Error 2
>
>
> Any ideas greatly appreciated.
>
> Thanks
> ----------------------------------------------------------------
> Morten Bjørnsvik, Experian Decision Analytics AS, Oslo, Norway
> ----------------------------------------------------------------
>
>
>

Re: unable to compile perl under perl 5.10.1

Posted by Fred Moyer <fr...@redhotpenguin.com>.
Have you verified perl was actually compiled with fpic?  perl -V

On Mon, Jan 11, 2010 at 7:23 AM, Morten Bjørnsvik
<mo...@experian-da.no> wrote:
> Hi all
> I'm unable to compile mod_perl-2.0.x from svn(trunk 2.0.5-dev) or cpan(2.0.4) on perl 5.10.1, do anyone have some
> black belt options that make it works, I believed the -fPIC now is embedded in the -Dusethreads, because
> I see it appear lots of places in the perl compile output
>
> I've tried compiling perl 5.10.1 with the following options
>
> ./Configure -des -A ccflags="-O2 -DPERL_USE_SAFE_PUTENV -fPIC" -Dusethreads -Duse64bitall \
>      -Dprefix=/opt/perl -Dinstallprefix=/opt/perl
>
> ./Configure -des -A ccflags=-DPERL_USE_SAFE_PUTENV -Accflags="-fPIC" -Dusethreads \
>      -Duse64bitall -Dprefix=/opt/perl -Dinstallprefix=/opt/perl
>
> ./Configure -des -A -Dusethreads -Duse64bitall -Dinstallprefix=/opt/perl
>
> perl always compiles and seem to work fine with other modules.
>
> Mod_perl2.0 build:
> Both cpan and and the svn checkout version, shows the same error:
> build cmd: cd '/usr/tmp/cpan_extract/mod_perl-2.0'; /opt/perl/bin/perl Makefile.PL MP_APXS=/opt/apache/bin/apxs
>
> cc -shared -O2 -L/usr/local/lib -fstack-protector \
>         \
>        mod_perl.lo modperl_interp.lo modperl_tipool.lo modperl_log.lo modperl_config.lo modperl_cmd.lo modperl_options.lo modperl_callback.lo modperl_handler.lo modperl_gtop.lo modperl_util.lo modperl_io.lo modperl_io_apache.lo modperl_filter.lo modperl_bucket.lo modperl_mgv.lo modperl_pcw.lo modperl_global.lo modperl_env.lo modperl_cgi.lo modperl_perl.lo modperl_perl_global.lo modperl_perl_pp.lo modperl_sys.lo modperl_module.lo modperl_svptr_table.lo modperl_const.lo modperl_constants.lo modperl_apache_compat.lo modperl_error.lo modperl_debug.lo modperl_common_util.lo modperl_common_log.lo modperl_hooks.lo modperl_directives.lo modperl_flags.lo modperl_xsinit.lo modperl_exports.lo  -Wl,-E  -fstack-protector -L/usr/local/lib  -L/opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE -lperl -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc \
>        -o mod_perl.so
> /usr/bin/ld: /opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE/libperl.a(op.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
> /opt/perl/lib/5.10.1/x86_64-linux-thread-multi/CORE/libperl.a: could not read symbols: Bad value
> collect2: ld returned 1 exit status
> make[1]: *** [mod_perl.so] Error 1
> make[1]: Leaving directory `/var/tmp/cpan_extract/mod_perl-2.0/src/modules/perl'
> make: *** [modperl_lib] Error 2
>
>
> Any ideas greatly appreciated.
>
> Thanks
> ----------------------------------------------------------------
> Morten Bjørnsvik, Experian Decision Analytics AS, Oslo, Norway
> ----------------------------------------------------------------
>
>
>