For example, here's how to add a couple of extra flags to C compiler
invocations:
- sh Configure -Accflags="-DPERL_Y2KWARN -DPERL_POLLUTE_MALLOC"
+ sh Configure -Accflags="-DPERL_EXTERNAL_GLOB -DPERL_POLLUTE_MALLOC"
For more help on Configure switches, run
vulnerable to attack by wily crackers) by setting the environment
variable PERL_HASH_SEED, see L<perlrun/PERL_HASH_SEED>. Another option
is to add -DUSE_HASH_SEED_EXPLICIT to the compilation flags (for
-example by using C<Configure -Accflags=-DUSE_HAS_SEED_EXPLICIT>), in
+example by using C<Configure -Accflags=-DUSE_HASH_SEED_EXPLICIT>), in
which case one has to explicitly set the PERL_HASH_SEED environment
variable to enable the security feature, or by adding -DNO_HASH_SEED to
the compilation flags to completely disable the randomisation feature.
You can do this by changing all the *archlib* variables in config.sh to
point to your new architecture-dependent library.
+=head3 Environment access
+
+Perl often needs to write to the program's environment, such as when C<%ENV>
+is assigned to. Many implementations of the C library function C<putenv()>
+leak memory, so where possible perl will manipulate the environment directly
+to avoid these leaks. The default is now to perform direct manipulation
+whenever perl is running as a stand alone interpreter, and to call the safe
+but potentially leaky C<putenv()> function when the perl interpreter is
+embedded in another application. You can force perl to always use C<putenv()>
+by compiling with -DPERL_USE_SAVE_PUTENV. You can force an embedded perl to
+use direct manipulation by setting C<PL_use_safe_putenv = 0;> after the
+C<perl_construct()> call.
+
=head2 Installation Directories
The installation directories can all be changed by answering the
directories ahead of those in APPLLIB_EXP by using any of the standard
run-time methods: $PERLLIB, $PERL5LIB, -I, use lib, etc.
+=item USE_SITECUSTOMIZE
+
+Run-time customization of @INC can be enabled with:
+
+ sh Configure -Dusesitecustomize
+
+Which will define USE_SITECUSTOMIZE and $Config{usesitecustomize}.
+When enabled, make perl run F<$sitelibexp/sitecustomize.pl> before
+anything else. This script can then be set up to add additional
+entries to @INC.
+
=item Man Pages
In versions 5.005_57 and earlier, the default was to store module man
then propagate your changes with B<sh Configure -S> and rebuild
with B<make depend; make>.
-=item Missing functions
+=item Missing functions and Undefined symbols
+
+If the build of miniperl fails with a long list of missing functions or
+undefined symbols, check the libs variable in the config.sh file. It
+should look something like
+
+ libs='-lsocket -lnsl -ldl -lm -lc'
+
+The exact libraries will vary from system to system, but you typically
+need to include at least the math library -lm. Normally, Configure
+will suggest the correct defaults. If the libs variable is empty, you
+need to start all over again. Run
+
+ make distclean
+
+and start from the very beginning. This time, unless you are sure of
+what you are doing, accept the default list of libraries suggested by
+Configure.
+
+If the libs variable looks correct, you might have the
+L<"nm extraction"> problem discussed above.
-If you have missing routines, you probably need to add some library or
-other, or you need to undefine some feature that Configure thought was
-there but is defective or incomplete. Look through config.h for
-likely suspects. If Configure guessed wrong on a number of functions,
-you might have the L<"nm extraction"> problem discussed above.
+If you stil have missing routines or undefined symbols, you probably
+need to add some library or other, or you need to undefine some feature
+that Configure thought was there but is defective or incomplete. If
+you used a hint file, see if it has any relevant advice. You can also
+look through through config.h for likely suspects.
=item toke.c