develooper Front page | perl.perl5.porters | Postings from June 2008

Re: [perl #54952] Building 5.6.2 Fails with -Duseshrplib on Leopard

Thread Previous
Andy Dougherty
June 3, 2008 11:55
Re: [perl #54952] Building 5.6.2 Fails with -Duseshrplib on Leopard
Message ID:
On Tue, 27 May 2008, David Wheeler wrote:

> -----------------------------------------------------------------
> I tried to build 5.6.2 on Mac OS X 10.5.2 with this configuration:

First, do you really want 5.6.2?  It's almost 5 years old.  The current
release is 5.10.0.

>   sh Configure -des -Duseshrplib -Dprefix=/usr/local/perl-5.6.2
> It failed during `make` with these errors:

> env MACOSX_DEPLOYMENT_TARGET=10.3 cc -o libperl.dylib -L/usr/local/lib
> -dynamiclib 		     -compatibility_version 1
> -current_version 				5.0
> -image_base 0x4be00000 			     -install_name /usr/
> local/perl-5.6.2/lib/5.6.2/darwin/CORE/libperl.dylib perl.o  gv.o toke.o
> perly.o op.o regcomp.o dump.o util.o mg.o hv.o av.o run.o pp_hot.o sv.o pp.o
> scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o
> universal.o xsutils.o globals.o perlio.o perlapi.o
> rm -f opmini.c
> cp op.c opmini.c
> `sh  cflags libperl.dylib opmini.o`  -DPERL_EXTERNAL_GLOB opmini.c
> 	  CCCMD =  cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN
> -no-cpp-precomp -fno-strict-aliasing -I/usr/local/include -O3
> rm -f opmini.c
> DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 cc -L/usr/local/lib -o miniperl \
> 	    miniperlmain.o opmini.o libperl.dylib -ldl -lm -lc -lutil
> DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./miniperl -w -Ilib -MExporter
> -e '<?>' || make minitest
> Can't load module File::Glob, dynamic loading not available in this perl.
>   (You may need to build a new perl executable which either supports
>   dynamic loading or has the File::Glob module statically linked into it.)
>  at -e line 1
> Compilation failed in require at -e line 1.
> BEGIN failed--compilation aborted at -e line 1.

This is odd.  miniperl should never be loading File/Glob.  Your build log clearly 
shows opmini.c was correctly built with the -DPERL_EXTERNAL_GLOB flag.

[ . . . ]

> When I tried again without -Duseshrplib, the build succeeded (hence the
> configuration information below is about a static Perl).

Is there a pre-existing libperl already installed?  If so, then perhaps
we're incorrectly picking up the pre-existing libperl.

If there is no pre-existing libperl, then I speculate the problem may be a
subtle one related to how Mac OS handles name resolution.  Specifically,
it looks like it's picking up the version of Perl_ck_glob() from op.o
(which is inside libperl.dylib) instead of the version in opmini.o,
which is linked directly to miniperl.  There may be some appropriate
linker flag we can use to suppress that behavior.  Or, perhaps, we need
to build miniperl by directly linking against all the objects instead
of linking against libperl.dylib.

    Andy Dougherty

Thread Previous Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About