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
<[email protected]> 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:[email protected]]
> 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
> <[email protected]> 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
>> ----------------------------------------------------------------
>>
>>
>>
>