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 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 the libs variable looks correct, 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
print("$f\n");
}
-in Solaris is as follows (under $Config{prefix}):
+in Linux is as follows (under $Config{prefix}):
./bin/perl
- ./lib/perl5/5.6.1/sun4-solaris-64int/auto/DynaLoader/autosplit.ix
- ./lib/perl5/5.6.1/sun4-solaris-64int/auto/DynaLoader/dl_expandspec.al
- ./lib/perl5/5.6.1/sun4-solaris-64int/auto/DynaLoader/dl_find_symbol_anywhere.al
- ./lib/perl5/5.6.1/sun4-solaris-64int/auto/DynaLoader/dl_findfile.al
- ./lib/perl5/5.6.1/sun4-solaris-64int/auto/File/Glob/Glob.so
- ./lib/perl5/5.6.1/sun4-solaris-64int/auto/File/Glob/autosplit.ix
- ./lib/perl5/5.6.1/sun4-solaris-64int/Config.pm
- ./lib/perl5/5.6.1/sun4-solaris-64int/XSLoader.pm
- ./lib/perl5/5.6.1/sun4-solaris-64int/DynaLoader.pm
- ./lib/perl5/5.6.1/sun4-solaris-64int/CORE/libperl.so
- ./lib/perl5/5.6.1/strict.pm
- ./lib/perl5/5.6.1/warnings.pm
- ./lib/perl5/5.6.1/Carp.pm
- ./lib/perl5/5.6.1/Exporter.pm
- ./lib/perl5/5.6.1/File/Glob.pm
- ./lib/perl5/5.6.1/AutoLoader.pm
- ./lib/perl5/5.6.1/vars.pm
- ./lib/perl5/5.6.1/warnings/register.pm
- ./lib/perl5/5.6.1/Carp/Heavy.pm
- ./lib/perl5/5.6.1/Exporter/Heavy.pm
+ ./lib/perl5/5.9.3/strict.pm
+ ./lib/perl5/5.9.3/warnings.pm
+ ./lib/perl5/5.9.3/i686-linux/File/Glob.pm
+ ./lib/perl5/5.9.3/i686-linux/XSLoader.pm
+ ./lib/perl5/5.9.3/i686-linux/auto/File/Glob/Glob.so
Secondly, Debian perl-base package contains the following files,
-size about 1.2MB in its i386 version:
+size about 1.9MB in its i386 version:
- /usr/share/doc/perl/Documentation
- /usr/share/doc/perl/README.Debian
- /usr/share/doc/perl/copyright
+ /usr/bin/perl
+ /usr/bin/perl5.8.4
+ /usr/lib/perl/5.8
+ /usr/lib/perl/5.8.4/B.pm
+ /usr/lib/perl/5.8.4/B/Deparse.pm
+ /usr/lib/perl/5.8.4/Config.pm
+ /usr/lib/perl/5.8.4/Cwd.pm
+ /usr/lib/perl/5.8.4/Data/Dumper.pm
+ /usr/lib/perl/5.8.4/DynaLoader.pm
+ /usr/lib/perl/5.8.4/Errno.pm
+ /usr/lib/perl/5.8.4/Fcntl.pm
+ /usr/lib/perl/5.8.4/File/Glob.pm
+ /usr/lib/perl/5.8.4/IO.pm
+ /usr/lib/perl/5.8.4/IO/File.pm
+ /usr/lib/perl/5.8.4/IO/Handle.pm
+ /usr/lib/perl/5.8.4/IO/Pipe.pm
+ /usr/lib/perl/5.8.4/IO/Seekable.pm
+ /usr/lib/perl/5.8.4/IO/Select.pm
+ /usr/lib/perl/5.8.4/IO/Socket.pm
+ /usr/lib/perl/5.8.4/POSIX.pm
+ /usr/lib/perl/5.8.4/Socket.pm
+ /usr/lib/perl/5.8.4/XSLoader.pm
+ /usr/lib/perl/5.8.4/auto/Cwd/Cwd.bs
+ /usr/lib/perl/5.8.4/auto/Cwd/Cwd.so
+ /usr/lib/perl/5.8.4/auto/Data/Dumper/Dumper.bs
+ /usr/lib/perl/5.8.4/auto/Data/Dumper/Dumper.so
+ /usr/lib/perl/5.8.4/auto/DynaLoader/DynaLoader.a
+ /usr/lib/perl/5.8.4/auto/DynaLoader/autosplit.ix
+ /usr/lib/perl/5.8.4/auto/DynaLoader/dl_expandspec.al
+ /usr/lib/perl/5.8.4/auto/DynaLoader/dl_find_symbol_anywhere.al
+ /usr/lib/perl/5.8.4/auto/DynaLoader/dl_findfile.al
+ /usr/lib/perl/5.8.4/auto/DynaLoader/extralibs.ld
+ /usr/lib/perl/5.8.4/auto/Fcntl/Fcntl.bs
+ /usr/lib/perl/5.8.4/auto/Fcntl/Fcntl.so
+ /usr/lib/perl/5.8.4/auto/File/Glob/Glob.bs
+ /usr/lib/perl/5.8.4/auto/File/Glob/Glob.so
+ /usr/lib/perl/5.8.4/auto/IO/IO.bs
+ /usr/lib/perl/5.8.4/auto/IO/IO.so
+ /usr/lib/perl/5.8.4/auto/POSIX/POSIX.bs
+ /usr/lib/perl/5.8.4/auto/POSIX/POSIX.so
+ /usr/lib/perl/5.8.4/auto/POSIX/autosplit.ix
+ /usr/lib/perl/5.8.4/auto/POSIX/load_imports.al
+ /usr/lib/perl/5.8.4/auto/Socket/Socket.bs
+ /usr/lib/perl/5.8.4/auto/Socket/Socket.so
+ /usr/lib/perl/5.8.4/lib.pm
+ /usr/lib/perl/5.8.4/re.pm
+ /usr/share/doc/perl-base
/usr/share/doc/perl/AUTHORS.gz
+ /usr/share/doc/perl/Documentation
+ /usr/share/doc/perl/README.Debian.gz
/usr/share/doc/perl/changelog.Debian.gz
+ /usr/share/doc/perl/copyright
/usr/share/man/man1/perl.1.gz
- /usr/share/perl/5.6.1/AutoLoader.pm
- /usr/share/perl/5.6.1/Carp.pm
- /usr/share/perl/5.6.1/Carp/Heavy.pm
- /usr/share/perl/5.6.1/Cwd.pm
- /usr/share/perl/5.6.1/Exporter.pm
- /usr/share/perl/5.6.1/Exporter/Heavy.pm
- /usr/share/perl/5.6.1/File/Spec.pm
- /usr/share/perl/5.6.1/File/Spec/Unix.pm
- /usr/share/perl/5.6.1/FileHandle.pm
- /usr/share/perl/5.6.1/Getopt/Long.pm
- /usr/share/perl/5.6.1/IO/Socket/INET.pm
- /usr/share/perl/5.6.1/IO/Socket/UNIX.pm
- /usr/share/perl/5.6.1/IPC/Open2.pm
- /usr/share/perl/5.6.1/IPC/Open3.pm
- /usr/share/perl/5.6.1/SelectSaver.pm
- /usr/share/perl/5.6.1/Symbol.pm
- /usr/share/perl/5.6.1/Text/Tabs.pm
- /usr/share/perl/5.6.1/Text/Wrap.pm
- /usr/share/perl/5.6.1/attributes.pm
- /usr/share/perl/5.6.1/auto/Getopt/Long/GetOptions.al
- /usr/share/perl/5.6.1/auto/Getopt/Long/FindOption.al
- /usr/share/perl/5.6.1/auto/Getopt/Long/Configure.al
- /usr/share/perl/5.6.1/auto/Getopt/Long/config.al
- /usr/share/perl/5.6.1/auto/Getopt/Long/Croak.al
- /usr/share/perl/5.6.1/auto/Getopt/Long/autosplit.ix
- /usr/share/perl/5.6.1/base.pm
- /usr/share/perl/5.6.1/constant.pm
- /usr/share/perl/5.6.1/fields.pm
- /usr/share/perl/5.6.1/integer.pm
- /usr/share/perl/5.6.1/lib.pm
- /usr/share/perl/5.6.1/locale.pm
- /usr/share/perl/5.6.1/overload.pm
- /usr/share/perl/5.6.1/strict.pm
- /usr/share/perl/5.6.1/vars.pm
- /usr/share/perl/5.6.1/warnings.pm
- /usr/share/perl/5.6.1/warnings/register.pm
- /usr/bin/perl
- /usr/lib/perl/5.6.1/Config.pm
- /usr/lib/perl/5.6.1/Data/Dumper.pm
- /usr/lib/perl/5.6.1/DynaLoader.pm
- /usr/lib/perl/5.6.1/Errno.pm
- /usr/lib/perl/5.6.1/Fcntl.pm
- /usr/lib/perl/5.6.1/File/Glob.pm
- /usr/lib/perl/5.6.1/IO.pm
- /usr/lib/perl/5.6.1/IO/File.pm
- /usr/lib/perl/5.6.1/IO/Handle.pm
- /usr/lib/perl/5.6.1/IO/Pipe.pm
- /usr/lib/perl/5.6.1/IO/Seekable.pm
- /usr/lib/perl/5.6.1/IO/Select.pm
- /usr/lib/perl/5.6.1/IO/Socket.pm
- /usr/lib/perl/5.6.1/POSIX.pm
- /usr/lib/perl/5.6.1/Socket.pm
- /usr/lib/perl/5.6.1/XSLoader.pm
- /usr/lib/perl/5.6.1/auto/Data/Dumper/Dumper.so
- /usr/lib/perl/5.6.1/auto/Data/Dumper/Dumper.bs
- /usr/lib/perl/5.6.1/auto/DynaLoader/dl_findfile.al
- /usr/lib/perl/5.6.1/auto/DynaLoader/dl_expandspec.al
- /usr/lib/perl/5.6.1/auto/DynaLoader/dl_find_symbol_anywhere.al
- /usr/lib/perl/5.6.1/auto/DynaLoader/autosplit.ix
- /usr/lib/perl/5.6.1/auto/DynaLoader/DynaLoader.a
- /usr/lib/perl/5.6.1/auto/DynaLoader/extralibs.ld
- /usr/lib/perl/5.6.1/auto/Fcntl/Fcntl.so
- /usr/lib/perl/5.6.1/auto/Fcntl/Fcntl.bs
- /usr/lib/perl/5.6.1/auto/File/Glob/Glob.bs
- /usr/lib/perl/5.6.1/auto/File/Glob/Glob.so
- /usr/lib/perl/5.6.1/auto/File/Glob/autosplit.ix
- /usr/lib/perl/5.6.1/auto/IO/IO.so
- /usr/lib/perl/5.6.1/auto/IO/IO.bs
- /usr/lib/perl/5.6.1/auto/POSIX/POSIX.bs
- /usr/lib/perl/5.6.1/auto/POSIX/POSIX.so
- /usr/lib/perl/5.6.1/auto/POSIX/autosplit.ix
- /usr/lib/perl/5.6.1/auto/POSIX/load_imports.al
- /usr/lib/perl/5.6.1/auto/Socket/Socket.so
- /usr/lib/perl/5.6.1/auto/Socket/Socket.bs
+ /usr/share/perl/5.8
+ /usr/share/perl/5.8.4/AutoLoader.pm
+ /usr/share/perl/5.8.4/Carp.pm
+ /usr/share/perl/5.8.4/Carp/Heavy.pm
+ /usr/share/perl/5.8.4/Exporter.pm
+ /usr/share/perl/5.8.4/Exporter/Heavy.pm
+ /usr/share/perl/5.8.4/File/Spec.pm
+ /usr/share/perl/5.8.4/File/Spec/Unix.pm
+ /usr/share/perl/5.8.4/FileHandle.pm
+ /usr/share/perl/5.8.4/Getopt/Long.pm
+ /usr/share/perl/5.8.4/IO/Socket/INET.pm
+ /usr/share/perl/5.8.4/IO/Socket/UNIX.pm
+ /usr/share/perl/5.8.4/IPC/Open2.pm
+ /usr/share/perl/5.8.4/IPC/Open3.pm
+ /usr/share/perl/5.8.4/List/Util.pm
+ /usr/share/perl/5.8.4/Scalar/Util.pm
+ /usr/share/perl/5.8.4/SelectSaver.pm
+ /usr/share/perl/5.8.4/Symbol.pm
+ /usr/share/perl/5.8.4/Text/ParseWords.pm
+ /usr/share/perl/5.8.4/Text/Tabs.pm
+ /usr/share/perl/5.8.4/Text/Wrap.pm
+ /usr/share/perl/5.8.4/attributes.pm
+ /usr/share/perl/5.8.4/base.pm
+ /usr/share/perl/5.8.4/bytes.pm
+ /usr/share/perl/5.8.4/bytes_heavy.pl
+ /usr/share/perl/5.8.4/constant.pm
+ /usr/share/perl/5.8.4/fields.pm
+ /usr/share/perl/5.8.4/integer.pm
+ /usr/share/perl/5.8.4/locale.pm
+ /usr/share/perl/5.8.4/overload.pm
+ /usr/share/perl/5.8.4/strict.pm
+ /usr/share/perl/5.8.4/utf8.pm
+ /usr/share/perl/5.8.4/utf8_heavy.pl
+ /usr/share/perl/5.8.4/vars.pm
+ /usr/share/perl/5.8.4/warnings.pm
+ /usr/share/perl/5.8.4/warnings/register.pm
=head1 DOCUMENTATION