Re: [perl #22941] Can't build perl with -Duseshrplib if /usr/bin/gcc is a perl script
Andy Dougherty [Tue, 15 Jul 2003 10:52:58 +0000 (06:52 -0400)]
Date: Tue, 15 Jul 2003 10:52:58 -0400 (EDT)
Message-ID: <Pine.SOL.4.53.0307151011550.7002@maxwell.phys.lafayette.edu>

plus a clarification to INSTALL :
Subject: [PATCH] Re: [perl #22941] Can't build perl with -Duseshrplib if /usr/bin/gcc is a perl script
From: Andy Dougherty <doughera@lafayette.edu>
Date: Wed, 16 Jul 2003 11:01:24 -0400 (EDT)
Message-ID: <Pine.SOL.4.53.0307161059400.10258@maxwell.phys.lafayette.edu>

p4raw-id: //depot/perl@20172

INSTALL
Makefile.SH

diff --git a/INSTALL b/INSTALL
index 359c68a..1f2ac62 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -972,10 +972,14 @@ LD_PRELOAD, specifying the exact filename you wish to be used; and on
 Digital Unix, you can override LD_LIBRARY_PATH by setting the
 _RLD_ROOT environment variable to point to the perl build directory.
 
-The only reliable answer is that you should specify a different
-directory for the architecture-dependent library for your -DDEBUGGING
-version of perl.  You can do this by changing all the *archlib*
-variables in config.sh to point to your new architecture-dependent library.
+In other words, it is generally not a good idea to try to build a perl
+with a shared library if $archlib/CORE/$libperl already exists from a
+previous build.
+
+A good workaround is to specify a different directory for the
+architecture-dependent library for your -DDEBUGGING version of perl.
+You can do this by changing all the *archlib* variables in config.sh to
+point to your new architecture-dependent library.
 
 =head2 Malloc Issues
 
index cf2f38e..ae6072e 100644 (file)
@@ -104,6 +104,13 @@ true)
 
        case "$osname" in
        linux)
+           # If there is a pre-existing $libperl from a previous
+           # installation, Linux needs to use LD_PRELOAD to
+           # override the LD_LIBRARY_PATH setting.  See the
+           # INSTALL file, under "Building a shared perl library".
+           # If there is no pre-existing $libperl, we don't need
+           # to do anything further.
+           if test -f $archlib/CORE/$libperl; then
                rm -f preload
                cat <<'EOT' > preload
 #! /bin/sh
@@ -114,7 +121,8 @@ exec "$@"
 EOT
                chmod 755 preload
                ldlibpth="$ldlibpth `pwd`/preload `pwd`/$libperl"
-               ;;
+           fi
+           ;;
        os390)  test -f /bin/env && ldlibpth="/bin/env $ldlibpth"
                ;;
        esac