1If you read this file _as_is_, just ignore the funny characters you see. 2It is written in the POD format (see F<pod/perlpod.pod>) which is specially 3designed to be readable as is. 4 5=head1 NAME 6 7INSTALL - Build and Installation guide for perl 5. 8 9=head1 SYNOPSIS 10 11First, make sure you have an up-to-date version of Perl. If you 12didn't get your Perl source from CPAN, check the latest version at 13L<https://www.cpan.org/src/>. Perl uses a version scheme where even-numbered 14subreleases (like 5.8.x and 5.10.x) are stable maintenance releases and 15odd-numbered subreleases (like 5.7.x and 5.9.x) are unstable 16development releases. Development releases should not be used in 17production environments. Fixes and new features are first carefully 18tested in development releases and only if they prove themselves to be 19worthy will they be migrated to the maintenance releases. 20 21The basic steps to build and install perl 5 on a Unix system with all 22the defaults are to run, from a freshly unpacked source tree: 23 24 sh Configure -de 25 make 26 make test 27 make install 28 29Each of these is explained in further detail below. 30 31The above commands will install Perl to F</usr/local> (or some other 32platform-specific directory -- see the appropriate file in F<hints/>.) 33If that's not okay with you, you can run Configure interactively, by 34just typing "sh Configure" (without the -de args). You can also specify 35any prefix location by adding C<"-Dprefix='/some/dir'"> to Configure's args. 36To explicitly name the perl binary, use the command 37"make install PERLNAME=myperl". 38 39Building perl from source requires an ANSI compliant C compiler. 40A minimum of C89 is required. Some features available in C99 will 41be probed for and used when found. The perl build process does not 42rely on anything more than C89. 43 44These options, and many more, are explained in further detail below. 45 46If you're building perl from a git repository, you should also consult 47the documentation in F<pod/perlgit.pod> for information on that special 48circumstance. 49 50If you have problems, corrections, or questions, please see 51L<"Reporting Problems"> below. 52 53For information on what's new in this release, see the 54F<pod/perldelta.pod> file. For more information about how to find more 55specific detail about changes, see the Changes file. 56 57=head1 DESCRIPTION 58 59This document is written in pod format as an easy way to indicate its 60structure. The pod format is described in F<pod/perlpod.pod>, but you can 61read it as is with any pager or editor. Headings and items are marked 62by lines beginning with '='. The other mark-up used is 63 64 B<text> embolden text, used for switches, programs or commands 65 C<code> literal code 66 L<name> A link (cross reference) to name 67 F<file> A filename 68 69Although most of the defaults are probably fine for most users, 70you should probably at least skim through this document before 71proceeding. 72 73In addition to this file, check if there is a README file specific to 74your operating system, since it may provide additional or different 75instructions for building Perl. If there is a hint file for your 76system (in the F<hints/> directory) you might also want to read it 77for even more information. 78 79For additional information about porting Perl, see the section on 80L<"Porting information"> below, and look at the files in the F<Porting/> 81directory. 82 83=head1 PRELIMINARIES 84 85=head2 Changes and Incompatibilities 86 87Please see F<pod/perldelta.pod> for a description of the changes and 88potential incompatibilities introduced with this release. A few of 89the most important issues are listed below, but you should refer 90to F<pod/perldelta.pod> for more detailed information. 91 92B<WARNING:> This version is not binary compatible with versions of Perl 93earlier than 5.32.0. If you have built extensions (i.e. modules that 94include C code) using an earlier version of Perl, you will need to 95rebuild and reinstall those extensions. 96 97Pure perl modules without XS or C code should continue to work fine 98without reinstallation. See the discussion below on 99L<"Coexistence with earlier versions of perl 5"> for more details. 100 101The standard extensions supplied with Perl will be handled automatically. 102 103On a related issue, old modules may possibly be affected by the changes 104in the Perl language in the current release. Please see 105F<pod/perldelta.pod> for a description of what's changed. See your 106installed copy of the perllocal.pod file for a (possibly incomplete) 107list of locally installed modules. Also see the L<CPAN> module's 108C<autobundle> function for one way to make a "bundle" of your currently 109installed modules. 110 111=head1 Run Configure 112 113Configure will figure out various things about your system. Some 114things Configure will figure out for itself, other things it will ask 115you about. To accept the default, just press RETURN. The default is 116almost always okay. It is normal for some things to be "NOT found", 117since Configure often searches for many different ways of performing 118the same function. 119 120At any Configure prompt, you can type &-d and Configure will use the 121defaults from then on. 122 123After it runs, Configure will perform variable substitution on all the 124*.SH files and offer to run make depend. 125 126The results of a Configure run are stored in the config.sh and Policy.sh 127files. 128 129=head2 Common Configure options 130 131Configure supports a number of useful options. Run 132 133 Configure -h 134 135to get a listing. See the F<Porting/Glossary> file for a complete list of 136Configure variables you can set and their definitions. 137 138=over 4 139 140=item C compiler 141 142To compile with gcc, if it's not the default compiler on your 143system, you should run 144 145 sh Configure -Dcc=gcc 146 147This is the preferred way to specify gcc (or any another alternative 148compiler) so that the hints files can set appropriate defaults. 149 150=item Installation prefix 151 152By default, for most systems, perl will be installed in 153F</usr/local/>{F<bin>, F<lib>, F<man>}. (See L<"Installation Directories"> 154and L<"Coexistence with earlier versions of perl 5"> below for 155further details.) 156 157You can specify a different 'prefix' for the default installation 158directory when Configure prompts you, or by using the Configure command 159line option C<-Dprefix='/some/directory'>, e.g. 160 161 sh Configure -Dprefix=/opt/perl 162 163If your prefix contains the string "perl", then the suggested 164directory structure is simplified. For example, if you use 165C<prefix=/opt/perl>, then Configure will suggest F</opt/perl/lib> instead of 166F</opt/perl/lib/perl5/>. Again, see L<"Installation Directories"> below 167for more details. Do not include a trailing slash, (i.e. F</opt/perl/>) 168or you may experience odd test failures. 169 170NOTE: You must not specify an installation directory that is the same 171as or below your perl source directory. If you do, installperl will 172attempt infinite recursion. 173 174=item F</usr/bin/perl> 175 176It may seem obvious, but Perl is useful only when users can easily 177find it. It's often a good idea to have both F</usr/bin/perl> and 178F</usr/local/bin/perl> be symlinks to the actual binary. Be especially 179careful, however, not to overwrite a version of perl supplied by your 180vendor unless you are sure you know what you are doing. If you insist 181on replacing your vendor's perl, useful information on how it was 182configured may be found with 183 184 perl -V:config_args 185 186(Check the output carefully, however, since this doesn't preserve 187spaces in arguments to Configure. For that, you have to look carefully 188at config_arg1, config_arg2, etc.) 189 190By default, Configure will not try to link F</usr/bin/perl> to the current 191version of perl. You can turn on that behavior by running 192 193 Configure -Dinstallusrbinperl 194 195or by answering 'yes' to the appropriate Configure prompt. 196 197In any case, system administrators are strongly encouraged to put 198(symlinks to) perl and its accompanying utilities, such as perldoc, 199into a directory typically found along a user's PATH, or in another 200obvious and convenient place. 201 202=item Building a development release 203 204For development releases (odd subreleases, like 5.9.x) if you want to 205use Configure -d, you will also need to supply -Dusedevel to Configure, 206because the default answer to the question "do you really want to 207Configure a development version?" is "no". The -Dusedevel skips that 208sanity check. 209 210=back 211 212If you are willing to accept all the defaults, and you want terse 213output, you can run 214 215 sh Configure -des 216 217=head2 Altering Configure variables for C compiler switches etc. 218 219For most users, most of the Configure defaults are fine, or can easily 220be set on the Configure command line. However, if Configure doesn't 221have an option to do what you want, you can change Configure variables 222after the platform hints have been run by using Configure's -A switch. 223For example, here's how to add a couple of extra flags to C compiler 224invocations: 225 226 sh Configure -Accflags="-DPERL_EXTERNAL_GLOB -DNO_HASH_SEED" 227 228To clarify, those ccflags values are not Configure options; if passed to 229Configure directly, they won't do anything useful (they will define a 230variable in config.sh, but without taking any action based upon it). 231But when passed to the compiler, those flags will activate #ifdefd code. 232 233For more help on Configure switches, run 234 235 sh Configure -h 236 237=head2 Major Configure-time Build Options 238 239There are several different ways to Configure and build perl for your 240system. For most users, the defaults are sensible and will work. 241Some users, however, may wish to further customize perl. Here are 242some of the main things you can change. 243 244=head3 Threads 245 246On some platforms, perl can be compiled with support for threads. To 247enable this, run 248 249 sh Configure -Dusethreads 250 251The default is to compile without thread support. 252 253Perl used to have two different internal threads implementations. The 254current model (available internally since 5.6, and as a user-level module 255since 5.8) is called interpreter-based implementation (ithreads), with 256one interpreter per thread, and explicit sharing of data. The (deprecated) 2575.005 version (5005threads) was removed for release 5.10. 258 259The 'threads' module is for use with the ithreads implementation. The 260'Thread' module emulates the old 5005threads interface on top of the 261current ithreads model. 262 263When using threads, perl uses a dynamically-sized buffer for some of 264the thread-safe library calls, such as those in the getpw*() family. 265This buffer starts small, but it will keep growing until the result 266fits. To get a fixed upper limit, you should compile Perl with 267PERL_REENTRANT_MAXSIZE defined to be the number of bytes you want. One 268way to do this is to run Configure with 269C<-Accflags=-DPERL_REENTRANT_MAXSIZE=65536>. 270 271=head3 Large file support 272 273Since Perl 5.6.0, Perl has supported large files (files larger than 2742 gigabytes), and in many common platforms like Linux or Solaris this 275support is on by default. 276 277This is both good and bad. It is good in that you can use large files, 278seek(), stat(), and -s them. It is bad in that if you are interfacing 279Perl using some extension, the components you are connecting to must also 280be large file aware: if Perl thinks files can be large but the other 281parts of the software puzzle do not understand the concept, bad things 282will happen. 283 284There's also one known limitation with the current large files 285implementation: unless you also have 64-bit integers (see the next 286section), you cannot use the printf/sprintf non-decimal integer formats 287like C<%x> to print filesizes. You can use C<%d>, though. 288 289If you want to compile perl without large file support, use 290 291 sh Configure -Uuselargefiles 292 293=head3 64 bit support 294 295If your platform does not run natively at 64 bits, but can simulate 296them with compiler flags and/or C<long long> or C<int64_t>, 297you can build a perl that uses 64 bits. 298 299There are actually two modes of 64-bitness: the first one is achieved 300using Configure -Duse64bitint and the second one using Configure 301-Duse64bitall. The difference is that the first one is minimal and 302the second one maximal. The first works in more places than the second. 303 304The C<use64bitint> option does only as much as is required to get 30564-bit integers into Perl (this may mean, for example, using "long 306longs") while your memory may still be limited to 2 gigabytes (because 307your pointers could still be 32-bit). Note that the name C<64bitint> 308does not imply that your C compiler will be using 64-bit C<int>s (it 309might, but it doesn't have to). The C<use64bitint> simply means that 310you will be able to have 64 bit-wide scalar values. 311 312The C<use64bitall> option goes all the way by attempting to switch 313integers (if it can), longs (and pointers) to being 64-bit. This may 314create an even more binary incompatible Perl than -Duse64bitint: the 315resulting executable may not run at all in a 32-bit box, or you may 316have to reboot/reconfigure/rebuild your operating system to be 64-bit 317aware. 318 319Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall. 320On these systems, it might be the default compilation mode, and there 321is currently no guarantee that passing no use64bitall option to the 322Configure process will build a 32bit perl. Implementing -Duse32bit* 323options is planned for a future release of perl. 324 325=head3 Long doubles 326 327In some systems you may be able to use long doubles to enhance the 328range and precision of your double precision floating point numbers 329(that is, Perl's numbers). Use Configure -Duselongdouble to enable 330this support (if it is available). 331 332Note that the exact format and range of long doubles varies: 333the most common is the x86 80-bit (64 bits of mantissa) format, 334but there are others, with different mantissa and exponent ranges. 335 336=head3 "more bits" 337 338You can "Configure -Dusemorebits" to turn on both the 64-bit support 339and the long double support. 340 341=head3 quadmath 342 343One option for more precision is that gcc 4.6 and later have a library 344called quadmath, which implements the IEEE 754 quadruple precision 345(128-bit, 113 bits of mantissa) floating point numbers. The library 346works at least on x86 and ia64 platforms. It may be part of your gcc 347installation, or you may need to install it separately. 348 349With "Configure -Dusequadmath" you can try enabling its use, but note 350the compiler dependency, you may need to also add "-Dcc=...". 351At C level the type is called C<__float128> (note, not "long double"), 352but Perl source knows it as NV. (This is not "long doubles".) 353 354=head3 Algorithmic Complexity Attacks on Hashes 355 356Perl 5.18 reworked the measures used to secure its hash function 357from algorithmic complexity attacks. By default it will build with 358all of these measures enabled along with support for controlling and 359disabling them via environment variables. 360 361You can override various aspects of this feature by defining various 362symbols during configure. An example might be: 363 364 sh Configure -Accflags=-DPERL_HASH_FUNC_SIPHASH 365 366B<Unless stated otherwise these options are considered experimental or 367insecure and are not recommended for production use.> 368 369Since Perl 5.18 we have included support for multiple hash functions, 370although from time to time we change which functions we support, 371and which function is default (currently SBOX+STADTX on 64 bit builds 372and SBOX+ZAPHOD32 for 32 bit builds). You can choose a different 373algorithm by defining one of the following symbols during configure. 374Note that there security implications of which hash function you choose 375to use. The functions are listed roughly by how secure they are believed 376to be, with the one believed to be most secure at release time being PERL_HASH_FUNC_SIPHASH. 377 378 PERL_HASH_FUNC_SIPHASH 379 PERL_HASH_FUNC_SIPHASH13 380 PERL_HASH_FUNC_ZAPHOD32 381 PERL_HASH_FUNC_STADTX 382 383In addition, these, (or custom hash functions), may be "fronted" by the 384SBOX32 hash function for keys under a chosen size. This hash function is 385special in that it has proven theoretical security properties, and is very 386fast to hash, but which by nature is restricted to a maximum key length, 387and which has rather expensive setup costs (relatively speaking), both in 388terms of performance and more importantly in terms of memory. SBOX32 389requires 1k of storage per character it can hash, and it must populate that 390storage with 256 32-bit random values as well. In practice the RNG we use 391for seeding the SBOX32 storage is very efficient and populating the table 392required for hashing even fairly long keys is negligible as we only do it 393during startup. By default we build with SBOX32 enabled, but you change that 394by setting 395 396 PERL_HASH_USE_SBOX32_ALSO 397 398to zero in configure. By default Perl will use SBOX32 to hash strings 24 bytes 399or shorter, you can change this length by setting 400 401 SBOX32_MAX_LEN 402 403to the desired length, with the maximum length being 256. 404 405As of Perl 5.18 the order returned by keys(), values(), and each() is 406non-deterministic and distinct per hash, and the insert order for 407colliding keys is randomized as well, and perl allows for controlling this 408by the PERL_PERTURB_KEYS environment setting. You can disable this behavior 409entirely with the define 410 411 PERL_PERTURB_KEYS_DISABLED 412 413You can disable the environment variable checks and compile time specify 414the type of key traversal randomization to be used by defining one of these: 415 416 PERL_PERTURB_KEYS_RANDOM 417 PERL_PERTURB_KEYS_DETERMINISTIC 418 419Since Perl 5.18 the seed used for the hash function is randomly selected 420at process start, which can be overridden by specifying a seed by setting 421the PERL_HASH_SEED environment variable. 422 423You can change this behavior so that your perl is built with a hard coded 424seed with the define 425 426 NO_HASH_SEED 427 428Note that if you do this you should modify the code in hv_func.h to specify 429your own key. In the future this define may be renamed and replaced with one 430that requires you to specify the key to use. 431 432B<NOTE WELL: Perl has never guaranteed any ordering of the hash keys>, and the 433ordering has already changed several times during the lifetime of Perl 4345. Also, the ordering of hash keys has always been, and continues to 435be, affected by the insertion order regardless of whether you build with 436or without the randomization features. Note that because of this 437and especially with randomization that the key order of a hash is *undefined* 438and that things like Data::Dumper, for example, may produce different output 439between different runs of Perl, since Data::Dumper serializes the key in the 440native order for the hash. The use of the Data::Dumper C<Sortkeys> option is 441recommended if you are comparing dumps between different invocations of perl. 442 443See L<perlrun/PERL_HASH_SEED> and L<perlrun/PERL_PERTURB_KEYS> for 444details on the environment variables, and L<perlsec/Algorithmic 445Complexity Attacks> for further security details. 446 447The C<PERL_HASH_SEED> and PERL_PERTURB_KEYS> environment variables can 448be disabled by building configuring perl with 449C<-Accflags=-DNO_PERL_HASH_ENV>. 450 451The C<PERL_HASH_SEED_DEBUG> environment variable can be disabled by 452configuring perl with C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>. 453 454=head3 SOCKS 455 456Perl can be configured to be 'socksified', that is, to use the SOCKS 457TCP/IP proxy protocol library. SOCKS is used to give applications 458access to transport layer network proxies. Perl supports only SOCKS 459Version 5. The corresponding Configure option is -Dusesocks. 460You can find more about SOCKS from wikipedia at 461L<https://en.wikipedia.org/wiki/SOCKS>. 462 463=head3 Dynamic Loading 464 465By default, Configure will compile perl to use dynamic loading. 466If you want to force perl to be compiled completely 467statically, you can either choose this when Configure prompts you or 468you can use the Configure command line option -Uusedl. 469With this option, you won't be able to use any new extension 470(XS) module without recompiling perl itself. 471 472=head3 Building a shared Perl library 473 474Currently, for most systems, the main perl executable is built by 475linking the "perl library" libperl.a with perlmain.o, your static 476extensions, and various extra libraries, such as -lm. 477 478On systems that support dynamic loading, it may be possible to 479replace libperl.a with a shared libperl.so. If you anticipate building 480several different perl binaries (e.g. by embedding libperl into 481different programs, or by using the optional compiler extension), then 482you might wish to build a shared libperl.so so that all your binaries 483can share the same library. 484 485The disadvantages are that there may be a significant performance 486penalty associated with the shared libperl.so, and that the overall 487mechanism is still rather fragile with respect to different versions 488and upgrades. 489 490In terms of performance, on my test system (Solaris 2.5_x86) the perl 491test suite took roughly 15% longer to run with the shared libperl.so. 492Your system and typical applications may well give quite different 493results. 494 495The default name for the shared library is typically something like 496libperl.so.5.8.8 (for Perl 5.8.8), or libperl.so.588, or simply 497libperl.so. Configure tries to guess a sensible naming convention 498based on your C library name. Since the library gets installed in a 499version-specific architecture-dependent directory, the exact name 500isn't very important anyway, as long as your linker is happy. 501 502You can elect to build a shared libperl by 503 504 sh Configure -Duseshrplib 505 506To build a shared libperl, the environment variable controlling shared 507library search (LD_LIBRARY_PATH in most systems, DYLD_LIBRARY_PATH for 508Darwin, LD_LIBRARY_PATH/SHLIB_PATH 509for HP-UX, LIBPATH for AIX, PATH for Cygwin) must be set up to include 510the Perl build directory because that's where the shared libperl will 511be created. Configure arranges makefile to have the correct shared 512library search settings. You can find the name of the environment 513variable Perl thinks works in your your system by 514 515 grep ldlibpthname config.sh 516 517However, there are some special cases where manually setting the 518shared library path might be required. For example, if you want to run 519something like the following with the newly-built but not-yet-installed 520./perl: 521 522 ./perl -I. -MTestInit t/misc/failing_test.t 523 524or 525 526 ./perl -Ilib ~/my_mission_critical_test 527 528then you need to set up the shared library path explicitly. 529You can do this with 530 531 LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH 532 533for Bourne-style shells, or 534 535 setenv LD_LIBRARY_PATH `pwd` 536 537for Csh-style shells. (This procedure may also be needed if for some 538unexpected reason Configure fails to set up makefile correctly.) (And 539again, it may be something other than LD_LIBRARY_PATH for you, see above.) 540 541You can often recognize failures to build/use a shared libperl from error 542messages complaining about a missing libperl.so (or libperl.sl in HP-UX), 543for example: 544 545 18126:./miniperl: /sbin/loader: Fatal Error: cannot map libperl.so 546 547There is also an potential problem with the shared perl library if you 548want to have more than one "flavor" of the same version of perl (e.g. 549with and without -DDEBUGGING). For example, suppose you build and 550install a standard Perl 5.10.0 with a shared library. Then, suppose you 551try to build Perl 5.10.0 with -DDEBUGGING enabled, but everything else 552the same, including all the installation directories. How can you 553ensure that your newly built perl will link with your newly built 554libperl.so.8 rather with the installed libperl.so.8? The answer is 555that you might not be able to. The installation directory is encoded 556in the perl binary with the LD_RUN_PATH environment variable (or 557equivalent ld command-line option). On Solaris, you can override that 558with LD_LIBRARY_PATH; on Linux, you can only override at runtime via 559LD_PRELOAD, specifying the exact filename you wish to be used; and on 560Digital Unix, you can override LD_LIBRARY_PATH by setting the 561_RLD_ROOT environment variable to point to the perl build directory. 562 563In other words, it is generally not a good idea to try to build a perl 564with a shared library if $archlib/CORE/$libperl already exists from a 565previous build. 566 567A good workaround is to specify a different directory for the 568architecture-dependent library for your -DDEBUGGING version of perl. 569You can do this by changing all the *archlib* variables in config.sh to 570point to your new architecture-dependent library. 571 572=head3 Environment access 573 574Perl often needs to write to the program's environment, such as when 575C<%ENV> is assigned to. Many implementations of the C library function 576C<putenv()> leak memory, so where possible perl will manipulate the 577environment directly to avoid these leaks. The default is now to perform 578direct manipulation whenever perl is running as a stand alone interpreter, 579and to call the safe but potentially leaky C<putenv()> function when the 580perl interpreter is embedded in another application. You can force perl 581to always use C<putenv()> by compiling with 582C<-Accflags="-DPERL_USE_SAFE_PUTENV">, see section L</"Altering Configure 583variables for C compiler switches etc.">. You can force an embedded perl 584to use direct manipulation by setting C<PL_use_safe_putenv = 0;> after 585the C<perl_construct()> call. 586 587=head3 External glob 588 589Before File::Glob entered core in 5.6.0 globbing was implemented by shelling 590out. If the environmental variable PERL_EXTERNAL_GLOB is defined and if the 591F<csh> shell is available, perl will still do this the old way. 592 593=head2 Installation Directories 594 595The installation directories can all be changed by answering the 596appropriate questions in Configure. For convenience, all the installation 597questions are near the beginning of Configure. Do not include trailing 598slashes on directory names. At any point during the Configure process, 599you can answer a question with &-d and Configure will use the defaults 600from then on. Alternatively, you can 601 602 grep '^install' config.sh 603 604after Configure has run to verify the installation paths. 605 606The defaults are intended to be reasonable and sensible for most 607people building from sources. Those who build and distribute binary 608distributions or who export perl to a range of systems will probably 609need to alter them. If you are content to just accept the defaults, 610you can safely skip the next section. 611 612The directories set up by Configure fall into three broad categories. 613 614=over 4 615 616=item Directories for the perl distribution 617 618By default, Configure will use the following directories for 5.32.1. 619$version is the full perl version number, including subversion, e.g. 6205.12.3, and $archname is a string like sun4-sunos, 621determined by Configure. The full definitions of all Configure 622variables are in the file Porting/Glossary. 623 624 Configure variable Default value 625 $prefixexp /usr/local 626 $binexp $prefixexp/bin 627 $scriptdirexp $prefixexp/bin 628 $privlibexp $prefixexp/lib/perl5/$version 629 $archlibexp $prefixexp/lib/perl5/$version/$archname 630 $man1direxp $prefixexp/man/man1 631 $man3direxp $prefixexp/man/man3 632 $html1direxp (none) 633 $html3direxp (none) 634 635$prefixexp is generated from $prefix, with ~ expansion done to convert 636home directories into absolute paths. Similarly for the other variables 637listed. As file system calls do not do this, you should always reference 638the ...exp variables, to support users who build perl in their home 639directory. 640 641Actually, Configure recognizes the SVR3-style 642/usr/local/man/l_man/man1 directories, if present, and uses those 643instead. Also, if $prefix contains the string "perl", the library 644directories are simplified as described below. For simplicity, only 645the common style is shown here. 646 647=item Directories for site-specific add-on files 648 649After perl is installed, you may later wish to add modules (e.g. from 650CPAN) or scripts. Configure will set up the following directories to 651be used for installing those add-on modules and scripts. 652 653 Configure Default 654 variable value 655 $siteprefixexp $prefixexp 656 $sitebinexp $siteprefixexp/bin 657 $sitescriptexp $siteprefixexp/bin 658 $sitelibexp $siteprefixexp/lib/perl5/site_perl/$version 659 $sitearchexp 660 $siteprefixexp/lib/perl5/site_perl/$version/$archname 661 $siteman1direxp $siteprefixexp/man/man1 662 $siteman3direxp $siteprefixexp/man/man3 663 $sitehtml1direxp (none) 664 $sitehtml3direxp (none) 665 666By default, ExtUtils::MakeMaker will install architecture-independent 667modules into $sitelib and architecture-dependent modules into $sitearch. 668 669=item Directories for vendor-supplied add-on files 670 671Lastly, if you are building a binary distribution of perl for 672distribution, Configure can optionally set up the following directories 673for you to use to distribute add-on modules. 674 675 Configure Default 676 variable value 677 $vendorprefixexp (none) 678 679 (The next ones are set only if vendorprefix is set.) 680 681 $vendorbinexp $vendorprefixexp/bin 682 $vendorscriptexp $vendorprefixexp/bin 683 $vendorlibexp $vendorprefixexp/lib/perl5/vendor_perl/$version 684 $vendorarchexp 685 $vendorprefixexp/lib/perl5/vendor_perl/$version/$archname 686 $vendorman1direxp $vendorprefixexp/man/man1 687 $vendorman3direxp $vendorprefixexp/man/man3 688 $vendorhtml1direxp (none) 689 $vendorhtml3direxp (none) 690 691These are normally empty, but may be set as needed. For example, 692a vendor might choose the following settings: 693 694 $prefix /usr 695 $siteprefix /usr/local 696 $vendorprefix /usr 697 698This would have the effect of setting the following: 699 700 $binexp /usr/bin 701 $scriptdirexp /usr/bin 702 $privlibexp /usr/lib/perl5/$version 703 $archlibexp /usr/lib/perl5/$version/$archname 704 $man1direxp /usr/man/man1 705 $man3direxp /usr/man/man3 706 707 $sitebinexp /usr/local/bin 708 $sitescriptexp /usr/local/bin 709 $sitelibexp /usr/local/lib/perl5/site_perl/$version 710 $sitearchexp /usr/local/lib/perl5/site_perl/$version/$archname 711 $siteman1direxp /usr/local/man/man1 712 $siteman3direxp /usr/local/man/man3 713 714 $vendorbinexp /usr/bin 715 $vendorscriptexp /usr/bin 716 $vendorlibexp /usr/lib/perl5/vendor_perl/$version 717 $vendorarchexp /usr/lib/perl5/vendor_perl/$version/$archname 718 $vendorman1direxp /usr/man/man1 719 $vendorman3direxp /usr/man/man3 720 721Note how in this example, the vendor-supplied directories are in the 722/usr hierarchy, while the directories reserved for the end user are in 723the /usr/local hierarchy. 724 725The entire installed library hierarchy is installed in locations with 726version numbers, keeping the installations of different versions distinct. 727However, later installations of Perl can still be configured to search 728the installed libraries corresponding to compatible earlier versions. 729See L<"Coexistence with earlier versions of perl 5"> below for more 730details on how Perl can be made to search older version directories. 731 732Of course you may use these directories however you see fit. For 733example, you may wish to use $siteprefix for site-specific files that 734are stored locally on your own disk and use $vendorprefix for 735site-specific files that are stored elsewhere on your organization's 736network. One way to do that would be something like 737 738 sh Configure -Dsiteprefix=/usr/local -Dvendorprefix=/usr/share/perl 739 740=item otherlibdirs 741 742As a final catch-all, Configure also offers an $otherlibdirs 743variable. This variable contains a colon-separated list of additional 744directories to add to @INC. By default, it will be empty. 745Perl will search these directories (including architecture and 746version-specific subdirectories) for add-on modules and extensions. 747 748For example, if you have a bundle of perl libraries from a previous 749installation, perhaps in a strange place: 750 751 sh Configure -Dotherlibdirs=/usr/lib/perl5/site_perl/5.8.1 752 753=item APPLLIB_EXP 754 755There is one other way of adding paths to @INC at perl build time, and 756that is by setting the APPLLIB_EXP C pre-processor token to a colon- 757separated list of directories, like this 758 759 sh Configure -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' 760 761The directories defined by APPLLIB_EXP get added to @INC I<first>, 762ahead of any others, and so provide a way to override the standard perl 763modules should you, for example, want to distribute fixes without 764touching the perl distribution proper. And, like otherlib dirs, 765version and architecture specific subdirectories are also searched, if 766present, at run time. Of course, you can still search other @INC 767directories ahead of those in APPLLIB_EXP by using any of the standard 768run-time methods: $PERLLIB, $PERL5LIB, -I, use lib, etc. 769 770=item default_inc_excludes_dot 771 772Since version 5.26.0, default perl builds no longer includes C<'.'> as the 773last element of @INC. The old behaviour can restored using 774 775 sh Configure -Udefault_inc_excludes_dot 776 777Note that this is likely to make programs run under such a perl 778interpreter less secure. 779 780=item usesitecustomize 781 782Run-time customization of @INC can be enabled with: 783 784 sh Configure -Dusesitecustomize 785 786which will define USE_SITECUSTOMIZE and $Config{usesitecustomize}. 787When enabled, this makes perl run F<$sitelibexp/sitecustomize.pl> before 788anything else. This script can then be set up to add additional 789entries to @INC. 790 791=item Man Pages 792 793By default, man pages will be installed in $man1dir and $man3dir, which 794are normally /usr/local/man/man1 and /usr/local/man/man3. If you 795want to use a .3pm suffix for perl man pages, you can do that with 796 797 sh Configure -Dman3ext=3pm 798 799You can disable installation of man pages completely using 800 801 sh Configure -Dman1dir=none -Dman3dir=none 802 803=item HTML pages 804 805Currently, the standard perl installation does not do anything with 806HTML documentation, but that may change in the future. Further, some 807add-on modules may wish to install HTML documents. The html Configure 808variables listed above are provided if you wish to specify where such 809documents should be placed. The default is "none", but will likely 810eventually change to something useful based on user feedback. 811 812=back 813 814Some users prefer to append a "/share" to $privlib and $sitelib 815to emphasize that those directories can be shared among different 816architectures. 817 818Note that these are just the defaults. You can actually structure the 819directories any way you like. They don't even have to be on the same 820filesystem. 821 822Further details about the installation directories, maintenance and 823development subversions, and about supporting multiple versions are 824discussed in L<"Coexistence with earlier versions of perl 5"> below. 825 826If you specify a prefix that contains the string "perl", then the 827library directory structure is slightly simplified. Instead of 828suggesting $prefix/lib/perl5/, Configure will suggest $prefix/lib. 829 830Thus, for example, if you Configure with 831-Dprefix=/opt/perl, then the default library directories for 5.9.0 are 832 833 Configure variable Default value 834 $privlib /opt/perl/lib/5.9.0 835 $archlib /opt/perl/lib/5.9.0/$archname 836 $sitelib /opt/perl/lib/site_perl/5.9.0 837 $sitearch /opt/perl/lib/site_perl/5.9.0/$archname 838 839=head2 Changing the installation directory 840 841Configure distinguishes between the directory in which perl (and its 842associated files) should be installed, and the directory in which it 843will eventually reside. For most sites, these two are the same; for 844sites that use AFS, this distinction is handled automatically. 845However, sites that use package management software such as rpm or 846dpkg, or users building binary packages for distribution may also 847wish to install perl into a different directory before moving perl 848to its final destination. There are two ways to do that: 849 850=over 4 851 852=item installprefix 853 854To install perl under the /tmp/perl5 directory, use the following 855command line: 856 857 sh Configure -Dinstallprefix=/tmp/perl5 858 859(replace /tmp/perl5 by a directory of your choice). 860 861Beware, though, that if you go to try to install new add-on 862modules, they too will get installed in under '/tmp/perl5' if you 863follow this example. That's why it's usually better to use DESTDIR, 864as shown in the next section. 865 866=item DESTDIR 867 868If you need to install perl on many identical systems, it is convenient 869to compile it once and create an archive that can be installed on 870multiple systems. Suppose, for example, that you want to create an 871archive that can be installed in /opt/perl. One way to do that is by 872using the DESTDIR variable during C<make install>. The DESTDIR is 873automatically prepended to all the installation paths. Thus you 874simply do: 875 876 sh Configure -Dprefix=/opt/perl -des 877 make 878 make test 879 make install DESTDIR=/tmp/perl5 880 cd /tmp/perl5/opt/perl 881 tar cvf /tmp/perl5-archive.tar . 882 883=back 884 885=head2 Relocatable @INC 886 887To create a relocatable perl tree, use the following command line: 888 889 sh Configure -Duserelocatableinc 890 891Then the paths in @INC (and everything else in %Config) can be 892optionally located via the path of the perl executable. 893 894That means that, if the string ".../" is found at the start of any 895path, it's substituted with the directory of $^X. So, the relocation 896can be configured on a per-directory basis, although the default with 897"-Duserelocatableinc" is that everything is relocated. The initial 898install is done to the original configured prefix. 899 900This option is not compatible with the building of a shared libperl 901("-Duseshrplib"), because in that case perl is linked with an hard-coded 902rpath that points at the libperl.so, that cannot be relocated. 903 904=head2 Site-wide Policy settings 905 906After Configure runs, it stores a number of common site-wide "policy" 907answers (such as installation directories) in the Policy.sh file. 908If you want to build perl on another system using the same policy 909defaults, simply copy the Policy.sh file to the new system's perl build 910directory, and Configure will use it. This will work even if Policy.sh was 911generated for another version of Perl, or on a system with a 912different architecture and/or operating system. However, in such cases, 913you should review the contents of the file before using it: for 914example, your new target may not keep its man pages in the same place 915as the system on which the file was generated. 916 917Alternatively, if you wish to change some or all of those policy 918answers, you should 919 920 rm -f Policy.sh 921 922to ensure that Configure doesn't re-use them. 923 924Further information is in the Policy_sh.SH file itself. 925 926If the generated Policy.sh file is unsuitable, you may freely edit it 927to contain any valid shell commands. It will be run just after the 928platform-specific hints files. 929 930=head2 Disabling older versions of Perl 931 932Configure will search for binary compatible versions of previously 933installed perl binaries in the tree that is specified as target tree, 934and these will be used as locations to search for modules by the perl 935being built. The list of perl versions found will be put in the Configure 936variable inc_version_list. 937 938To disable this use of older perl modules, even completely valid pure 939perl modules, you can specify to not include the paths found: 940 941 sh Configure -Dinc_version_list=none ... 942 943If you do want to use modules from some previous perl versions, the 944variable must contain a space separated list of directories under the 945site_perl directory, and has to include architecture-dependent 946directories separately, eg. 947 948 sh Configure -Dinc_version_list="5.16.0/x86_64-linux 5.16.0" ... 949 950When using the newer perl, you can add these paths again in the 951PERL5LIB environment variable or with perl's -I runtime option. 952 953=head2 Building Perl outside of the source directory 954 955Sometimes it is desirable to build Perl in a directory different from 956where the sources are, for example if you want to keep your sources 957read-only, or if you want to share the sources between different binary 958architectures. You can do this (if your file system supports symbolic 959links) by 960 961 mkdir /tmp/perl/build/directory 962 cd /tmp/perl/build/directory 963 sh /path/to/perl/source/Configure -Dmksymlinks ... 964 965This will create in /tmp/perl/build/directory a tree of symbolic links 966pointing to files in /path/to/perl/source. The original files are left 967unaffected. After Configure has finished you can just say 968 969 make 970 make test 971 make install 972 973as usual, and Perl will be built in /tmp/perl/build/directory. 974 975=head2 Building a debugging perl 976 977You can run perl scripts under the perl debugger at any time with 978B<perl -d your_script>. If, however, you want to debug perl itself, 979you probably want to have support for perl internal debugging code 980(activated by adding -DDEBUGGING to ccflags), and/or support for the 981system debugger by adding -g to the optimisation flags. 982 983A perl compiled with the DEBUGGING C preprocessor macro will support the 984C<-D> perl command-line switch, have assertions enabled, and have many 985extra checks compiled into the code; but will execute much more slowly 986(typically 2-3x) and the binary will be much larger (typically 2-3x). 987 988As a convenience, debugging code (-DDEBUGGING) and debugging symbols (-g) 989can be enabled jointly or separately using a Configure switch, also 990(somewhat confusingly) named -DDEBUGGING. For a more eye appealing call, 991-DEBUGGING is defined to be an alias for -DDEBUGGING. For both, the -U 992calls are also supported, in order to be able to overrule the hints or 993Policy.sh settings. 994 995Here are the DEBUGGING modes: 996 997=over 4 998 999=item Configure -DDEBUGGING 1000 1001=item Configure -DEBUGGING 1002 1003=item Configure -DEBUGGING=both 1004 1005Sets both -DDEBUGGING in the ccflags, and adds -g to optimize. 1006 1007You can actually specify -g and -DDEBUGGING independently (see below), 1008but usually it's convenient to have both. 1009 1010=item Configure -DEBUGGING=-g 1011 1012=item Configure -Doptimize=-g 1013 1014Adds -g to optimize, but does not set -DDEBUGGING. 1015 1016(Note: Your system may actually require something like cc -g2. 1017Check your man pages for cc(1) and also any hint file for your system.) 1018 1019=item Configure -DEBUGGING=none 1020 1021=item Configure -UDEBUGGING 1022 1023Removes -g from optimize, and -DDEBUGGING from ccflags. 1024 1025=back 1026 1027If you are using a shared libperl, see the warnings about multiple 1028versions of perl under L</Building a shared Perl library>. 1029 1030Note that a perl built with -DDEBUGGING will be much bigger and will run 1031much, much more slowly than a standard perl. 1032 1033=head2 DTrace support 1034 1035On platforms where DTrace is available, it may be enabled by 1036using the -Dusedtrace option to Configure. DTrace probes are available 1037for subroutine entry (sub-entry) and subroutine exit (sub-exit). Here's a 1038simple D script that uses them: 1039 1040 perl$target:::sub-entry, perl$target:::sub-return { 1041 printf("%s %s (%s:%d)\n", probename == "sub-entry" ? "->" : "<-", 1042 copyinstr(arg0), copyinstr(arg1), arg2); 1043 } 1044 1045 1046=head2 Extensions 1047 1048Perl ships with a number of standard extensions. These are contained 1049in the F<ext/> subdirectory. 1050 1051By default, Configure will offer to build every extension which appears 1052to be supported. For example, Configure will offer to build GDBM_File 1053only if it is able to find the gdbm library. 1054 1055To disable certain extensions so that they are not built, use the 1056-Dnoextensions=... and -Donlyextensions=... options. They both accept 1057a space-separated list of extensions, such as C<IPC/SysV>. The extensions 1058listed in 1059C<noextensions> are removed from the list of extensions to build, while 1060the C<onlyextensions> is rather more severe and builds only the listed 1061extensions. The latter should be used with extreme caution since 1062certain extensions are used by many other extensions and modules: 1063examples of such modules include Fcntl and IO. The order of processing 1064these options is first C<only> (if present), then C<no> (if present). 1065 1066Of course, you may always run Configure interactively and select only 1067the extensions you want. 1068 1069If you unpack any additional extensions in the ext/ directory before 1070running Configure, then Configure will offer to build those additional 1071extensions as well. Most users probably shouldn't have to do this -- 1072it is usually easier to build additional extensions later after perl 1073has been installed. However, if you wish to have those additional 1074extensions statically linked into the perl binary, then this offers a 1075convenient way to do that in one step. (It is not necessary, however; 1076you can build and install extensions just fine even if you don't have 1077dynamic loading. See lib/ExtUtils/MakeMaker.pm for more details.) 1078Another way of specifying extra modules is described in 1079L<"Adding extra modules to the build"> below. 1080 1081If you re-use an old config.sh but change your system (e.g. by 1082adding libgdbm) Configure will still offer your old choices of extensions 1083for the default answer, but it will also point out the discrepancy to 1084you. 1085 1086=head2 Including locally-installed libraries 1087 1088Perl comes with interfaces to number of libraries, including threads, 1089dbm, ndbm, gdbm, and Berkeley db. For the *db* extension, if 1090Configure can find the appropriate header files and libraries, it will 1091automatically include that extension. The threading extension needs 1092to be specified explicitly (see L</Threads>). 1093 1094Those libraries are not distributed with perl. If your header (.h) files 1095for those libraries are not in a directory normally searched by your C 1096compiler, then you will need to include the appropriate -I/your/directory 1097option when prompted by Configure. If your libraries are not in a 1098directory normally searched by your C compiler and linker, then you will 1099need to include the appropriate -L/your/directory option when prompted 1100by Configure. See the examples below. 1101 1102=head3 Examples 1103 1104=over 4 1105 1106=item gdbm in /usr/local 1107 1108Suppose you have gdbm and want Configure to find it and build the 1109GDBM_File extension. This example assumes you have gdbm.h 1110installed in /usr/local/include/gdbm.h and libgdbm.a installed in 1111/usr/local/lib/libgdbm.a. Configure should figure all the 1112necessary steps out automatically. 1113 1114Specifically, when Configure prompts you for flags for 1115your C compiler, you should include -I/usr/local/include, if it's 1116not here yet. Similarly, when Configure prompts you for linker flags, 1117you should include -L/usr/local/lib. 1118 1119If you are using dynamic loading, then when Configure prompts you for 1120linker flags for dynamic loading, you should again include 1121-L/usr/local/lib. 1122 1123Again, this should all happen automatically. This should also work if 1124you have gdbm installed in any of (/usr/local, /opt/local, /usr/gnu, 1125/opt/gnu, /usr/GNU, or /opt/GNU). 1126 1127=item BerkeleyDB in /usr/local/BerkeleyDB 1128 1129The version of BerkeleyDB distributed by Oracle installs in a 1130version-specific directory by default, typically something like 1131/usr/local/BerkeleyDB.4.7. To have Configure find that, you need to add 1132-I/usr/local/BerkeleyDB.4.7/include to cc flags, as in the previous 1133example, and you will also have to take extra steps to help Configure 1134find -ldb. Specifically, when Configure prompts you for library 1135directories, add /usr/local/BerkeleyDB.4.7/lib to the list. Also, you 1136will need to add appropriate linker flags to tell the runtime linker 1137where to find the BerkeleyDB shared libraries. 1138 1139It is possible to specify this from the command line (all on one 1140line): 1141 1142 sh Configure -de \ 1143 -Dlocincpth='/usr/local/BerkeleyDB.4.7/include \ 1144 /usr/local/include' \ 1145 -Dloclibpth='/usr/local/BerkeleyDB.4.7/lib /usr/local/lib' \ 1146 -Aldflags='-R/usr/local/BerkeleyDB.4.7/lib' 1147 1148locincpth is a space-separated list of include directories to search. 1149Configure will automatically add the appropriate -I directives. 1150 1151loclibpth is a space-separated list of library directories to search. 1152Configure will automatically add the appropriate -L directives. 1153 1154The addition to ldflags is so that the dynamic linker knows where to find 1155the BerkeleyDB libraries. For Linux and Solaris, the -R option does that. 1156Other systems may use different flags. Use the appropriate flag for your 1157system. 1158 1159=back 1160 1161=head2 Specifying a logical root directory 1162 1163If you are cross-compiling, or are using a compiler which has it's own 1164headers and libraries in a nonstandard location, and your compiler 1165understands the C<--sysroot> option, you can use the C<-Dsysroot> option 1166to specify the logical root directory under which all libraries and 1167headers are searched for. This patch adjusts Configure to search under 1168$sysroot, instead of /. 1169 1170--sysroot is added to ccflags and friends so that make in 1171ExtUtils::MakeMaker, and other extensions, will use it. 1172 1173=head2 Overriding an old config.sh 1174 1175If you want to use an old config.sh produced by a previous run of 1176Configure, but override some of the items with command line options, you 1177need to use B<Configure -O>. 1178 1179=head2 GNU-style configure 1180 1181If you prefer the GNU-style configure command line interface, you can 1182use the supplied configure.gnu command, e.g. 1183 1184 CC=gcc ./configure.gnu 1185 1186The configure.gnu script emulates a few of the more common configure 1187options. Try 1188 1189 ./configure.gnu --help 1190 1191for a listing. 1192 1193(The file is called configure.gnu to avoid problems on systems 1194that would not distinguish the files "Configure" and "configure".) 1195 1196=head2 Malloc Issues 1197 1198Perl relies heavily on malloc(3) to grow data structures as needed, 1199so perl's performance can be noticeably affected by the performance of 1200the malloc function on your system. The perl source is shipped with a 1201version of malloc that has been optimized for the typical requests from 1202perl, so there's a chance that it may be both faster and use less memory 1203than your system malloc. 1204 1205However, if your system already has an excellent malloc, or if you are 1206experiencing difficulties with extensions that use third-party libraries 1207that call malloc, then you should probably use your system's malloc. 1208(Or, you might wish to explore the malloc flags discussed below.) 1209 1210=over 4 1211 1212=item Using the system malloc 1213 1214To build without perl's malloc, you can use the Configure command 1215 1216 sh Configure -Uusemymalloc 1217 1218or you can answer 'n' at the appropriate interactive Configure prompt. 1219 1220Note that Perl's malloc isn't always used by default; that actually 1221depends on your system. For example, on Linux and FreeBSD (and many more 1222systems), Configure chooses to use the system's malloc by default. 1223See the appropriate file in the F<hints/> directory to see how the 1224default is set. 1225 1226=item -DPERL_POLLUTE_MALLOC 1227 1228NOTE: This flag is enabled automatically on some platforms if you just 1229run Configure to accept all the defaults. 1230 1231Perl's malloc family of functions are normally called Perl_malloc(), 1232Perl_realloc(), Perl_calloc() and Perl_mfree(). 1233These names do not clash with the system versions of these functions. 1234 1235If this flag is enabled, however, Perl's malloc family of functions 1236will have the same names as the system versions. This may be required 1237sometimes if you have libraries that like to free() data that may have 1238been allocated by Perl_malloc() and vice versa. 1239 1240Note that enabling this option may sometimes lead to duplicate symbols 1241from the linker for malloc et al. In such cases, the system probably 1242does not allow its malloc functions to be fully replaced with custom 1243versions. 1244 1245=item -DPERL_DEBUGGING_MSTATS 1246 1247This flag enables debugging mstats, which is required to use the 1248Devel::Peek::mstat() function. You cannot enable this unless you are 1249using Perl's malloc, so a typical Configure command would be 1250 1251 sh Configure -Accflags=-DPERL_DEBUGGING_MSTATS -Dusemymalloc 1252 1253to enable this option. 1254 1255=back 1256 1257=head2 What if it doesn't work? 1258 1259If you run into problems, try some of the following ideas. 1260If none of them help, then see L<"Reporting Problems"> below. 1261 1262=over 4 1263 1264=item Running Configure Interactively 1265 1266If Configure runs into trouble, remember that you can always run 1267Configure interactively so that you can check (and correct) its 1268guesses. 1269 1270All the installation questions have been moved to the top, so you don't 1271have to wait for them. Once you've handled them (and your C compiler and 1272flags) you can type &-d at the next Configure prompt and Configure 1273will use the defaults from then on. 1274 1275If you find yourself trying obscure command line incantations and 1276config.over tricks, I recommend you run Configure interactively 1277instead. You'll probably save yourself time in the long run. 1278 1279=item Hint files 1280 1281Hint files tell Configure about a number of things: 1282 1283=over 4 1284 1285=item o 1286 1287The peculiarities or conventions of particular platforms -- non-standard 1288library locations and names, default installation locations for binaries, 1289and so on. 1290 1291=item o 1292 1293The deficiencies of the platform -- for example, library functions that, 1294although present, are too badly broken to be usable; or limits on 1295resources that are generously available on most platforms. 1296 1297=item o 1298 1299How best to optimize for the platform, both in terms of binary size 1300and/or speed, and for Perl feature support. Because of wide variations in 1301the implementation of shared libraries and of threading, for example, 1302Configure often needs hints in order to be able to use these features. 1303 1304=back 1305 1306The perl distribution includes many system-specific hints files 1307in the hints/ directory. If one of them matches your system, Configure 1308will offer to use that hint file. Unless you have a very good reason 1309not to, you should accept its offer. 1310 1311Several of the hint files contain additional important information. 1312If you have any problems, it is a good idea to read the relevant hint 1313file for further information. See hints/solaris_2.sh for an extensive 1314example. More information about writing good hints is in the 1315hints/README.hints file, which also explains hint files known as 1316callback-units. 1317 1318Note that any hint file is read before any Policy file, meaning that 1319Policy overrides hints -- see L</Site-wide Policy settings>. 1320 1321=item WHOA THERE!!! 1322 1323If you are re-using an old config.sh, it's possible that Configure 1324detects different values from the ones specified in this file. You will 1325almost always want to keep the previous value, unless you have changed 1326something on your system. 1327 1328For example, suppose you have added libgdbm.a to your system 1329and you decide to reconfigure perl to use GDBM_File. When you run 1330Configure again, you will need to add -lgdbm to the list of libraries. 1331Now, Configure will find your gdbm include file and library and will 1332issue a message: 1333 1334 *** WHOA THERE!!! *** 1335 The previous value for $i_gdbm on this machine was "undef"! 1336 Keep the previous value? [y] 1337 1338In this case, you do not want to keep the previous value, so you 1339should answer 'n'. (You'll also have to manually add GDBM_File to 1340the list of dynamic extensions to build.) 1341 1342=item Changing Compilers 1343 1344If you change compilers or make other significant changes, you should 1345probably not re-use your old config.sh. Simply remove it or 1346rename it, then rerun Configure with the options you want to use. 1347 1348=item Propagating your changes to config.sh 1349 1350If you make any changes to config.sh, you should propagate 1351them to all the .SH files by running 1352 1353 sh Configure -S 1354 1355You will then have to rebuild by running 1356 1357 make depend 1358 make 1359 1360=item config.over and config.arch 1361 1362You can also supply a shell script config.over to override 1363Configure's guesses. It will get loaded up at the very end, just 1364before config.sh is created. You have to be careful with this, 1365however, as Configure does no checking that your changes make sense. 1366This file is usually good for site-specific customizations. 1367 1368There is also another file that, if it exists, is loaded before the 1369config.over, called config.arch. This file is intended to be per 1370architecture, not per site, and usually it's the architecture-specific 1371hints file that creates the config.arch. 1372 1373=item config.h 1374 1375Many of the system dependencies are contained in config.h. 1376Configure builds config.h by running the config_h.SH script. 1377The values for the variables are taken from config.sh. 1378 1379If there are any problems, you can edit config.h directly. Beware, 1380though, that the next time you run Configure, your changes will be 1381lost. 1382 1383=item cflags 1384 1385If you have any additional changes to make to the C compiler command 1386line, they can be made in cflags.SH. For instance, to turn off the 1387optimizer on toke.c, find the switch structure marked 'or customize here', 1388and add a line for toke.c ahead of the catch-all *) so that it now reads: 1389 1390 : or customize here 1391 1392 case "$file" in 1393 toke) optimize='-g' ;; 1394 *) ;; 1395 1396You should not edit the generated file cflags directly, as your changes 1397will be lost the next time you run Configure, or if you edit config.sh. 1398 1399To explore various ways of changing ccflags from within a hint file, 1400see the file hints/README.hints. 1401 1402To change the C flags for all the files, edit config.sh and change either 1403$ccflags or $optimize, and then re-run 1404 1405 sh Configure -S 1406 make depend 1407 1408=item No sh 1409 1410If you don't have sh, you'll have to copy the sample file 1411Porting/config.sh to config.sh and edit your config.sh to reflect your 1412system's peculiarities. See Porting/pumpkin.pod for more information. 1413You'll probably also have to extensively modify the extension building 1414mechanism. 1415 1416=item Porting information 1417 1418Specific information for the OS/2, Plan 9, VMS and Win32 ports is in the 1419corresponding README files and subdirectories. Additional information, 1420including a glossary of all those config.sh variables, is in the Porting 1421subdirectory. Porting/Glossary should especially come in handy. 1422 1423Ports for other systems may also be available. You should check out 1424L<https://www.cpan.org/ports> for current information on ports to 1425various other operating systems. 1426 1427If you plan to port Perl to a new architecture, study carefully the 1428section titled "Philosophical Issues in Patching and Porting Perl" 1429in the file Porting/pumpkin.pod and the file pod/perlgit.pod. 1430Study also how other non-UNIX ports have solved problems. 1431 1432=back 1433 1434=head2 Adding extra modules to the build 1435 1436You can specify extra modules or module bundles to be fetched from the 1437CPAN and installed as part of the Perl build. Either use the -Dextras=... 1438command line parameter to Configure, for example like this: 1439 1440 Configure -Dextras="Bundle::LWP DBI" 1441 1442or answer first 'y' to the question 'Install any extra modules?' and 1443then answer "Bundle::LWP DBI" to the 'Extras?' question. 1444The module or the bundle names are as for the CPAN module 'install' 1445command. This will only work if those modules are to be built as dynamic 1446extensions. If you wish to include those extra modules as static 1447extensions, see L<"Extensions"> above. 1448 1449Notice that because the CPAN module will be used to fetch the extra 1450modules, you will need access to the CPAN, either via the Internet, 1451or via a local copy such as a CD-ROM or a local CPAN mirror. If you 1452do not, using the extra modules option will die horribly. 1453 1454Also notice that you yourself are responsible for satisfying any extra 1455dependencies such as external headers or libraries BEFORE trying the 1456build. For example: you will need to have the Foo database specific 1457headers and libraries installed for the DBD::Foo module. The Configure 1458process or the Perl build process will not help you with these. 1459 1460=head2 suidperl 1461 1462suidperl was an optional component of earlier releases of perl. It is no 1463longer available. Instead, use a tool specifically designed to handle 1464changes in privileges, such as B<sudo>. 1465 1466=head1 make depend 1467 1468This will look for all the includes. The output is stored in makefile. 1469The only difference between Makefile and makefile is the dependencies at 1470the bottom of makefile. If you have to make any changes, you should edit 1471makefile, not Makefile, since the Unix make command reads makefile first. 1472(On non-Unix systems, the output may be stored in a different file. 1473Check the value of $firstmakefile in your config.sh if in doubt.) 1474 1475Configure will offer to do this step for you, so it isn't listed 1476explicitly above. 1477 1478=head1 make 1479 1480This will attempt to make perl in the current directory. 1481 1482=head2 Expected errors 1483 1484These error reports are normal, and can be ignored: 1485 1486 ... 1487 make: [extra.pods] Error 1 (ignored) 1488 ... 1489 make: [extras.make] Error 1 (ignored) 1490 1491=head2 What if it doesn't work? 1492 1493If you can't compile successfully, try some of the following ideas. 1494If none of them help, and careful reading of the error message and 1495the relevant manual pages on your system doesn't help, 1496then see L<"Reporting Problems"> below. 1497 1498=over 4 1499 1500=item hints 1501 1502If you used a hint file, try reading the comments in the hint file 1503for further tips and information. 1504 1505=item extensions 1506 1507If you can successfully build miniperl, but the process crashes 1508during the building of extensions, run 1509 1510 make minitest 1511 1512to test your version of miniperl. 1513 1514=item locale 1515 1516If you have any locale-related environment variables set, try unsetting 1517them. I have some reports that some versions of IRIX hang while 1518running B<./miniperl configpm> with locales other than the C locale. 1519See the discussion under L<"make test"> below about locales and the 1520whole L<perllocale/"LOCALE PROBLEMS"> section in the file 1521pod/perllocale.pod. The latter is especially useful if you see something 1522like this 1523 1524 perl: warning: Setting locale failed. 1525 perl: warning: Please check that your locale settings: 1526 LC_ALL = "En_US", 1527 LANG = (unset) 1528 are supported and installed on your system. 1529 perl: warning: Falling back to the standard locale ("C"). 1530 1531at Perl startup. 1532 1533=item other environment variables 1534 1535Configure does not check for environment variables that can sometimes 1536have a major influence on how perl is built or tested. For example, 1537OBJECT_MODE on AIX determines the way the compiler and linker deal with 1538their objects, but this is a variable that only influences build-time 1539behaviour, and should not affect the perl scripts that are eventually 1540executed by the perl binary. Other variables, like PERL_UNICODE, 1541PERL5LIB, and PERL5OPT will influence the behaviour of the test suite. 1542So if you are getting strange test failures, you may want to try 1543retesting with the various PERL variables unset. 1544 1545=item LD_LIBRARY_PATH 1546 1547If you run into dynamic loading problems, check your setting of 1548the LD_LIBRARY_PATH environment variable. If you're creating a static 1549Perl library (libperl.a rather than libperl.so) it should build 1550fine with LD_LIBRARY_PATH unset, though that may depend on details 1551of your local setup. 1552 1553=item nm extraction 1554 1555If Configure seems to be having trouble finding library functions, 1556try not using nm extraction. You can do this from the command line 1557with 1558 1559 sh Configure -Uusenm 1560 1561or by answering the nm extraction question interactively. 1562If you have previously run Configure, you should not reuse your old 1563config.sh. 1564 1565=item umask not found 1566 1567If the build processes encounters errors relating to umask(), the problem 1568is probably that Configure couldn't find your umask() system call. 1569Check your config.sh. You should have d_umask='define'. If you don't, 1570this is probably the L<"nm extraction"> problem discussed above. Also, 1571try reading the hints file for your system for further information. 1572 1573=item do_aspawn 1574 1575If you run into problems relating to do_aspawn or do_spawn, the 1576problem is probably that Configure failed to detect your system's 1577fork() function. Follow the procedure in the previous item 1578on L<"nm extraction">. 1579 1580=item __inet_* errors 1581 1582If you receive unresolved symbol errors during Perl build and/or test 1583referring to __inet_* symbols, check to see whether BIND 8.1 is 1584installed. It installs a /usr/local/include/arpa/inet.h that refers to 1585these symbols. Versions of BIND later than 8.1 do not install inet.h 1586in that location and avoid the errors. You should probably update to a 1587newer version of BIND (and remove the files the old one left behind). 1588If you can't, you can either link with the updated resolver library 1589provided with BIND 8.1 or rename /usr/local/bin/arpa/inet.h during the 1590Perl build and test process to avoid the problem. 1591 1592=item .*_r() prototype NOT found 1593 1594On a related note, if you see a bunch of complaints like the above about 1595reentrant functions -- specifically networking-related ones -- being 1596present but without prototypes available, check to see if BIND 8.1 (or 1597possibly other BIND 8 versions) is (or has been) installed. They install 1598header files such as netdb.h into places such as /usr/local/include (or 1599into another directory as specified at build/install time), at least 1600optionally. Remove them or put them in someplace that isn't in the C 1601preprocessor's header file include search path (determined by -I options 1602plus defaults, normally /usr/include). 1603 1604=item #error "No DATAMODEL_NATIVE specified" 1605 1606This is a common error when trying to build perl on Solaris 2.6 with a 1607gcc installation from Solaris 2.5 or 2.5.1. The Solaris header files 1608changed, so you need to update your gcc installation. You can either 1609rerun the fixincludes script from gcc or take the opportunity to 1610update your gcc installation. 1611 1612=item Optimizer 1613 1614If you can't compile successfully, try turning off your compiler's 1615optimizer. Edit config.sh and change the line 1616 1617 optimize='-O' 1618 1619to 1620 1621 optimize=' ' 1622 1623then propagate your changes with B<sh Configure -S> and rebuild 1624with B<make depend; make>. 1625 1626=item Missing functions and Undefined symbols 1627 1628If the build of miniperl fails with a long list of missing functions or 1629undefined symbols, check the libs variable in the config.sh file. It 1630should look something like 1631 1632 libs='-lsocket -lnsl -ldl -lm -lc' 1633 1634The exact libraries will vary from system to system, but you typically 1635need to include at least the math library -lm. Normally, Configure 1636will suggest the correct defaults. If the libs variable is empty, you 1637need to start all over again. Run 1638 1639 make distclean 1640 1641and start from the very beginning. This time, unless you are sure of 1642what you are doing, accept the default list of libraries suggested by 1643Configure. 1644 1645If the libs variable is missing -lm, there is a chance that libm.so.1 1646is available, but the required (symbolic) link to libm.so is missing. 1647(same could be the case for other libraries like libcrypt.so). You 1648should check your installation for packages that create that link, and 1649if no package is installed that supplies that link or you cannot install 1650them, make the symbolic link yourself e.g.: 1651 1652 $ rpm -qf /usr/lib64/libm.so 1653 glibc-devel-2.15-22.17.1.x86_64 1654 $ ls -lgo /usr/lib64/libm.so 1655 lrwxrwxrwx 1 16 Jan 7 2013 /usr/lib64/libm.so -> /lib64/libm.so.6 1656 1657 or 1658 1659 $ sudo ln -s /lib64/libm.so.6 /lib64/libm.so 1660 1661If the libs variable looks correct, you might have the 1662L<"nm extraction"> problem discussed above. 1663 1664If you still have missing routines or undefined symbols, you probably 1665need to add some library or other, make a symbolic link like described 1666above, or you need to undefine some feature that Configure thought was 1667there but is defective or incomplete. If you used a hint file, see if 1668it has any relevant advice. You can also look through config.h 1669for likely suspects. 1670 1671=item toke.c 1672 1673Some compilers will not compile or optimize the larger files (such as 1674toke.c) without some extra switches to use larger jump offsets or 1675allocate larger internal tables. You can customize the switches for 1676each file in cflags.SH. It's okay to insert rules for specific files 1677into makefile since a default rule only takes effect in the absence of a 1678specific rule. 1679 1680=item Missing dbmclose 1681 1682SCO prior to 3.2.4 may be missing dbmclose(). An upgrade to 3.2.4 1683that includes libdbm.nfs (which includes dbmclose()) may be available. 1684 1685=item error: too few arguments to function 'dbmclose' 1686 1687Building ODBM_File on some (Open)SUSE distributions might run into this 1688error, as the header file is broken. There are two ways to deal with this 1689 1690 1. Disable the use of ODBM_FILE 1691 1692 sh Configure ... -Dnoextensions=ODBM_File 1693 1694 2. Fix the header file, somewhat like this: 1695 1696 --- a/usr/include/dbm.h 2010-03-24 08:54:59.000000000 +0100 1697 +++ b/usr/include/dbm.h 2010-03-24 08:55:15.000000000 +0100 1698 @@ -59,4 +59,4 @@ extern datum firstkey __P((void)); 1699 1700 extern datum nextkey __P((datum key)); 1701 1702 -extern int dbmclose __P((DBM *)); 1703 +extern int dbmclose __P((void)); 1704 1705=item Warning (mostly harmless): No library found for -lsomething 1706 1707If you see such a message during the building of an extension, but 1708the extension passes its tests anyway (see L<"make test"> below), 1709then don't worry about the warning message. The extension 1710Makefile.PL goes looking for various libraries needed on various 1711systems; few systems will need all the possible libraries listed. 1712Most users will see warnings for the ones they don't have. The 1713phrase 'mostly harmless' is intended to reassure you that nothing 1714unusual is happening, and the build process is continuing. 1715 1716On the other hand, if you are building GDBM_File and you get the 1717message 1718 1719 Warning (mostly harmless): No library found for -lgdbm 1720 1721then it's likely you're going to run into trouble somewhere along 1722the line, since it's hard to see how you can use the GDBM_File 1723extension without the -lgdbm library. 1724 1725It is true that, in principle, Configure could have figured all of 1726this out, but Configure and the extension building process are not 1727quite that tightly coordinated. 1728 1729=item sh: ar: not found 1730 1731This is a message from your shell telling you that the command 'ar' 1732was not found. You need to check your PATH environment variable to 1733make sure that it includes the directory with the 'ar' command. This 1734is a common problem on Solaris, where 'ar' is in the /usr/ccs/bin 1735directory. 1736 1737=item db-recno failure on tests 51, 53 and 55 1738 1739Old versions of the DB library (including the DB library which comes 1740with FreeBSD 2.1) had broken handling of recno databases with modified 1741bval settings. Upgrade your DB library or OS. 1742 1743=item Bad arg length for semctl, is XX, should be ZZZ 1744 1745If you get this error message from the F<cpan/IPC-SysV/t/sem.t> test, your 1746System V IPC may be broken. The XX typically is 20, and that is what ZZZ 1747also should be. Consider upgrading your OS, or reconfiguring your OS 1748to include the System V semaphores. 1749 1750=item cpan/IPC-SysV/t/sem........semget: No space left on device 1751 1752Either your account or the whole system has run out of semaphores. Or 1753both. Either list the semaphores with "ipcs" and remove the unneeded 1754ones (which ones these are depends on your system and applications) 1755with "ipcrm -s SEMAPHORE_ID_HERE" or configure more semaphores to your 1756system. 1757 1758=item GNU binutils 1759 1760If you mix GNU binutils (nm, ld, ar) with equivalent vendor-supplied 1761tools you may be in for some trouble. For example creating archives 1762with an old GNU 'ar' and then using a new current vendor-supplied 'ld' 1763may lead into linking problems. Either recompile your GNU binutils 1764under your current operating system release, or modify your PATH not 1765to include the GNU utils before running Configure, or specify the 1766vendor-supplied utilities explicitly to Configure, for example by 1767Configure -Dar=/bin/ar. 1768 1769=item THIS PACKAGE SEEMS TO BE INCOMPLETE 1770 1771The F<Configure> program has not been able to find all the files which 1772make up the complete Perl distribution. You may have a damaged source 1773archive file (in which case you may also have seen messages such as 1774C<gzip: stdin: unexpected end of file> and C<tar: Unexpected EOF on 1775archive file>), or you may have obtained a structurally-sound but 1776incomplete archive. In either case, try downloading again from the 1777official site named at the start of this document. If you do find 1778that any site is carrying a corrupted or incomplete source code 1779archive, please report it to the site's maintainer. 1780 1781=item invalid token: ## 1782 1783You are using a non-ANSI-compliant C compiler. To compile Perl, you 1784need to use a compiler that supports ANSI C. If there is a README 1785file for your system, it may have further details on your compiler 1786options. 1787 1788=item Miscellaneous 1789 1790Some additional things that have been reported: 1791 1792Genix may need to use libc rather than libc_s, or #undef VARARGS. 1793 1794NCR Tower 32 (OS 2.01.01) may need -W2,-Sl,2000 and #undef MKDIR. 1795 1796UTS may need one or more of -K or -g, and #undef LSTAT. 1797 1798FreeBSD can fail the F<cpan/IPC-SysV/t/sem.t> test if SysV IPC has not been 1799configured in the kernel. Perl tries to detect this, though, and 1800you will get a message telling you what to do. 1801 1802Building Perl on a system that has also BIND (headers and libraries) 1803installed may run into troubles because BIND installs its own netdb.h 1804and socket.h, which may not agree with the operating system's ideas of 1805the same files. Similarly, including -lbind may conflict with libc's 1806view of the world. You may have to tweak -Dlocincpth and -Dloclibpth 1807to avoid the BIND. 1808 1809=back 1810 1811=head2 Cross-compilation 1812 1813Perl can be cross-compiled. It is just not trivial, cross-compilation 1814rarely is. Perl is routinely cross-compiled for several platforms: as of 1815June 2019, these include Android, Blackberry 10, 1816ARM Linux, and Solaris. Previous versions of 1817Perl also provided support for Open Zaurus, Symbian, and 1818the IBM OS/400, but it's unknown if those ports are still functional. 1819These platforms are known as the B<target> platforms, while the systems 1820where the compilation takes place are the B<host> platforms. 1821 1822What makes the situation difficult is that first of all, 1823cross-compilation environments vary significantly in how they are set 1824up and used, and secondly because the primary way of configuring Perl 1825(using the rather large Unix-tool-dependent Configure script) is not 1826awfully well suited for cross-compilation. However, starting from 1827version 5.18.0, the Configure script also knows two ways of supporting 1828cross-compilation, so please keep reading. 1829 1830See the following files for more information about compiling Perl for 1831the particular platforms: 1832 1833=over 4 1834 1835=item Android 1836 1837L<"Cross-compilation" in README.android or 1838perlandroid|perlandroid/Cross-compilation> 1839 1840=item Blackberry 1841 1842L<"Cross-compilation" in README.qnx or perlqnx|perlqnx/Cross-compilation> 1843 1844=item Solaris 1845 1846L<"CROSS-COMPILATION" in README.solaris or 1847perlsolaris|perlsolaris/CROSS-COMPILATION> 1848 1849=item Linux 1850 1851This document; See below. 1852 1853=back 1854 1855Packaging and transferring either the core Perl modules or CPAN 1856modules to the target platform is also left up to the each 1857cross-compilation environment. Often the cross-compilation target 1858platforms are somewhat limited in diskspace: see the section 1859L</Minimizing the Perl installation> to learn more of the minimal set 1860of files required for a functional Perl installation. 1861 1862For some cross-compilation environments the Configure option 1863C<-Dinstallprefix=...> might be handy, see L</Changing the installation 1864directory>. 1865 1866About the cross-compilation support of Configure: There's two forms. 1867The more common one requires some way of transferring and running 1868executables in the target system, such as an ssh connection; this is the 1869C<./Configure -Dusecrosscompile -Dtargethost=...> route. The second 1870method doesn't need access to the target system, but requires you to 1871provide a config.sh, and a canned Makefile; the rest of this section 1872describes the former. 1873 1874This cross-compilation setup of Configure has successfully been used in 1875a wide variety of setups, such as a 64-bit OS X host for an Android ARM 1876target, or an amd64 Linux host targeting x86 Solaris, or even Windows. 1877 1878To run Configure in cross-compilation mode the basic switch that 1879has to be used is C<-Dusecrosscompile>: 1880 1881 sh ./Configure -des -Dusecrosscompile -D... 1882 1883This will make the cpp symbol USE_CROSS_COMPILE and the %Config 1884symbol C<usecrosscompile> available. 1885 1886During the Configure and build, certain helper scripts will be created 1887into the Cross/ subdirectory. The scripts are used to execute a 1888cross-compiled executable, and to transfer files to and from the 1889target host. The execution scripts are named F<run-*> and the 1890transfer scripts F<to-*> and F<from-*>. The part after the dash is 1891the method to use for remote execution and transfer: by default the 1892methods are B<ssh> and B<scp>, thus making the scripts F<run-ssh>, 1893F<to-scp>, and F<from-scp>. 1894 1895To configure the scripts for a target host and a directory (in which 1896the execution will happen and which is to and from where the transfer 1897happens), supply Configure with 1898 1899 -Dtargethost=so.me.ho.st -Dtargetdir=/tar/get/dir 1900 1901The targethost is what e.g. ssh will use as the hostname, the targetdir 1902must exist (the scripts won't create it), the targetdir defaults to /tmp. 1903You can also specify a username to use for ssh/rsh logins 1904 1905 -Dtargetuser=luser 1906 1907but in case you don't, "root" will be used. Similarly, you can specify 1908a non-standard (i.e. not 22) port for the connection, if applicable, 1909through 1910 1911 -Dtargetport=2222 1912 1913If the name of C<cc> has the usual GNU C semantics for cross 1914compilers, that is, CPU-OS-gcc, the target architecture (C<targetarch>), 1915plus names of the C<ar>, C<nm>, and C<ranlib> will also be automatically 1916chosen to be CPU-OS-ar and so on. 1917(The C<ld> requires more thought and will be chosen later by Configure 1918as appropriate). This will also aid in guessing the proper 1919operating system name for the target, which has other repercussions, like 1920better defaults and possibly critical fixes for the platform. If 1921Configure isn't guessing the OS name properly, you may need to either add 1922a hint file redirecting Configure's guess, or modify Configure to make 1923the correct choice. 1924 1925If your compiler doesn't follow that convention, you will also need to 1926specify which target environment to use, as well as C<ar> and friends: 1927 1928 -Dtargetarch=arm-linux 1929 -Dcc=mycrossgcc 1930 -Dar=... 1931 1932Additionally, a cross-compilation toolchain will usually install it's own 1933logical system root somewhere -- that is, it'll create a directory 1934somewhere which includes subdirectories like C<'include'> or C<'lib'>. For 1935example, you may end up with F</skiff/local/arm-linux>, where 1936F</skiff/local/arm-linux/bin> holds the binaries for cross-compilation, 1937F</skiff/local/arm-linux/include> has the headers, and 1938F</skiff/local/arm-linux/lib> has the library files. 1939If this is the case, and you are using a compiler that understands 1940C<--sysroot>, like gcc or clang, you'll want to specify the 1941C<-Dsysroot> option for Configure: 1942 1943 -Dsysroot=/skiff/local/arm-linux 1944 1945However, if your don't have a suitable directory to pass to C<-Dsysroot>, 1946you will also need to specify which target environment to use: 1947 1948 -Dusrinc=/skiff/local/arm-linux/include 1949 -Dincpth=/skiff/local/arm-linux/include 1950 -Dlibpth=/skiff/local/arm-linux/lib 1951 1952In addition to the default execution/transfer methods you can also 1953choose B<rsh> for execution, and B<rcp> or B<cp> for transfer, 1954for example: 1955 1956 -Dtargetrun=rsh -Dtargetto=rcp -Dtargetfrom=cp 1957 1958Putting it all together: 1959 1960 sh ./Configure -des -Dusecrosscompile \ 1961 -Dtargethost=so.me.ho.st \ 1962 -Dtargetdir=/tar/get/dir \ 1963 -Dtargetuser=root \ 1964 -Dtargetarch=arm-linux \ 1965 -Dcc=arm-linux-gcc \ 1966 -Dsysroot=/skiff/local/arm-linux \ 1967 -D... 1968 1969or if you are happy with the defaults: 1970 1971 sh ./Configure -des -Dusecrosscompile \ 1972 -Dtargethost=so.me.ho.st \ 1973 -Dcc=arm-linux-gcc \ 1974 -D... 1975 1976Another example where the cross-compiler has been installed under 1977F</usr/local/arm/2.95.5>: 1978 1979 sh ./Configure -des -Dusecrosscompile \ 1980 -Dtargethost=so.me.ho.st \ 1981 -Dcc=/usr/local/arm/2.95.5/bin/arm-linux-gcc \ 1982 -Dsysroot=/usr/local/arm/2.95.5 1983 1984There is also a C<targetenv> option for Configure which can be used 1985to modify the environment of the target just before testing begins 1986during 'make test'. For example, if the target system has a nonstandard 1987/tmp location, you could do this: 1988 1989 -Dtargetenv="export TMPDIR=/other/tmp;" 1990 1991If you are planning on cross-compiling to several platforms, or some 1992other thing that would involve running Configure several times, there are 1993two options that can be used to speed things up considerably. 1994As a bit of background, when you 1995call Configure with C<-Dusecrosscompile>, it begins by actually partially 1996building a miniperl on the host machine, as well as the generate_uudmap 1997binary, and we end up using that during the build. 1998So instead of building that new perl every single time, you can build it 1999just once in a separate directory, and then pass the resulting binaries 2000to Configure like this: 2001 2002 -Dhostperl=/path/to/second/build/dir/miniperl 2003 -Dhostgenerate=/path/to/second/build/dir/generate_uudmap 2004 2005Much less commonly, if you are cross-compiling from an ASCII host to an 2006EBCDIC target, or vise versa, you'll have to pass C<-Uhostgenerate> to 2007Configure, to signify that you want to build a generate_uudmap binary 2008that, during make, will be run on the target system. 2009 2010=head1 make test 2011 2012This will run the regression tests on the perl you just made. If 2013'make test' doesn't say "All tests successful" then something went 2014wrong. 2015 2016Note that you can't run the tests in background if this disables 2017opening of /dev/tty. You can use 'make test-notty' in that case but 2018a few tty tests will be skipped. 2019 2020=head2 What if make test doesn't work? 2021 2022If make test bombs out, just cd to the t directory and run ./TEST 2023by hand to see if it makes any difference. 2024 2025One way to get more detailed information about failed tests and 2026individual subtests is to run the harness from the t directory: 2027 2028 cd t ; ./perl harness <list of tests> 2029 2030(this assumes that most basic tests succeed, since harness uses 2031complicated constructs). If no list of tests is provided, harness 2032will run all tests. 2033 2034If individual tests fail, you can often run them by hand (from the main 2035perl directory), e.g., 2036 2037 ./perl -I. -MTestInit t/op/groups.t 2038 2039You should also read the individual tests to see if there are any helpful 2040comments that apply to your system. You may also need to setup your 2041shared library path if you get errors like: 2042 2043 /sbin/loader: Fatal Error: cannot map libperl.so 2044 2045The file t/README in the t subdirectory contains more information about 2046running and modifying tests. 2047 2048See L</"Building a shared Perl library"> earlier in this document. 2049 2050=over 4 2051 2052=item locale 2053 2054Note: One possible reason for errors is that some external programs 2055may be broken due to the combination of your environment and the way 2056'make test' exercises them. For example, this may happen if you have 2057one or more of these environment variables set: LC_ALL LC_CTYPE 2058LC_COLLATE LANG. In some versions of UNIX, the non-English locales 2059are known to cause programs to exhibit mysterious errors. 2060 2061If you have any of the above environment variables set, please try 2062 2063 setenv LC_ALL C 2064 2065(for C shell) or 2066 2067 LC_ALL=C;export LC_ALL 2068 2069for Bourne or Korn shell) from the command line and then retry 2070make test. If the tests then succeed, you may have a broken program that 2071is confusing the testing. Please run the troublesome test by hand as 2072shown above and see whether you can locate the program. Look for 2073things like: exec, `backquoted command`, system, open("|...") or 2074open("...|"). All these mean that Perl is trying to run some 2075external program. 2076 2077=item Timing problems 2078 2079Several tests in the test suite check timing functions, such as 2080sleep(), and see if they return in a reasonable amount of time. 2081If your system is quite busy and doesn't respond quickly enough, 2082these tests might fail. If possible, try running the tests again 2083with the system under a lighter load. These timing-sensitive 2084and load-sensitive tests include F<t/op/alarm.t>, 2085F<dist/Time-HiRes/t/alarm.t>, F<dist/Time-HiRes/t/clock.t>, 2086F<dist/Time-HiRes/t/itimer.t>, F<dist/Time-HiRes/t/usleep.t>, 2087F<dist/threads-shared/t/waithires.t>, 2088F<dist/threads-shared/t/stress.t>, F<lib/Benchmark.t>, 2089F<lib/Memoize/t/expmod_t.t>, and F<lib/Memoize/t/speed.t>. 2090 2091You might also experience some failures in F<t/op/stat.t> if you build 2092perl on an NFS filesystem, if the remote clock and the system clock are 2093different. 2094 2095=item Out of memory 2096 2097On some systems, particularly those with smaller amounts of RAM, some 2098of the tests in t/op/pat.t may fail with an "Out of memory" message. 2099For example, on my SparcStation IPC with 12 MB of RAM, in perl5.5.670, 2100test 85 will fail if run under either t/TEST or t/harness. 2101 2102Try stopping other jobs on the system and then running the test by itself: 2103 2104 ./perl -I. -MTestInit t/op/pat.t 2105 2106to see if you have any better luck. If your perl still fails this 2107test, it does not necessarily mean you have a broken perl. This test 2108tries to exercise the regular expression subsystem quite thoroughly, 2109and may well be far more demanding than your normal usage. 2110 2111=item libgcc_s.so.1: cannot open shared object file 2112 2113This message has been reported on gcc-3.2.3 and earlier installed with 2114a non-standard prefix. Setting the LD_LIBRARY_PATH environment variable 2115(or equivalent) to include gcc's lib/ directory with the libgcc_s.so.1 2116shared library should fix the problem. 2117 2118=item Failures from lib/File/Temp/t/security saying "system possibly insecure" 2119 2120First, such warnings are not necessarily serious or indicative of a 2121real security threat. That being said, they bear investigating. 2122 2123Note that each of the tests is run twice. The first time is in the 2124directory returned by File::Spec->tmpdir() (often /tmp on Unix 2125systems), and the second time in the directory from which the test was 2126run (usually the 't' directory, if the test was run as part of 'make 2127test'). 2128 2129The tests may fail for the following reasons: 2130 2131(1) If the directory the tests are being run in is owned by somebody 2132other than the user running the tests, or by root (uid 0). 2133 2134This failure can happen if the Perl source code distribution is 2135unpacked in such a way that the user IDs in the distribution package 2136are used as-is. Some tar programs do this. 2137 2138(2) If the directory the tests are being run in is writable by group or 2139by others, and there is no sticky bit set for the directory. (With 2140UNIX/POSIX semantics, write access to a directory means the right to 2141add or remove files in that directory. The 'sticky bit' is a feature 2142used in some UNIXes to give extra protection to files: if the bit is 2143set for a directory, no one but the owner (or root) can remove that 2144file even if the permissions would otherwise allow file removal by 2145others.) 2146 2147This failure may or may not be a real problem: it depends on the 2148permissions policy used on this particular system. This failure can 2149also happen if the system either doesn't support the sticky bit (this 2150is the case with many non-UNIX platforms: in principle File::Temp 2151should know about these platforms and skip the tests), or if the system 2152supports the sticky bit but for some reason or reasons it is not being 2153used. This is, for example, the case with HP-UX: as of HP-UX release 215411.00, the sticky bit is very much supported, but HP-UX doesn't use it 2155on its /tmp directory as shipped. Also, as with the permissions, some 2156local policy might dictate that the stickiness is not used. 2157 2158(3) If the system supports the POSIX 'chown giveaway' feature and if 2159any of the parent directories of the temporary file back to the root 2160directory are 'unsafe', using the definitions given above in (1) and 2161(2). For Unix systems, this is usually not an issue if you are 2162building on a local disk. See the documentation for the File::Temp 2163module for more information about 'chown giveaway'. 2164 2165See the documentation for the File::Temp module for more information 2166about the various security aspects of temporary files. 2167 2168=back 2169 2170The core distribution can now run its regression tests in parallel on 2171Unix-like platforms. Instead of running C<make test>, set C<TEST_JOBS> 2172in your environment to the number of tests to run in parallel, and run 2173C<make test_harness>. On a Bourne-like shell, this can be done as 2174 2175 TEST_JOBS=3 make test_harness # Run 3 tests in parallel 2176 2177An environment variable is used, rather than parallel make itself, 2178because L<TAP::Harness> needs to be able to schedule individual 2179non-conflicting test scripts itself, and there is no standard interface 2180to C<make> utilities to interact with their job schedulers. 2181 2182=head1 make install 2183 2184This will put perl into the public directory you specified to 2185Configure; by default this is /usr/local/bin. It will also try to put 2186the man pages in a reasonable place. It will not nroff the man pages, 2187however. You may need to be root to run B<make install>. If you are not 2188root, you must still have permission to install into the directories 2189in question and you should ignore any messages about chown not working. 2190 2191If "make install" just says "'install' is up to date" or something 2192similar, you may be on a case-insensitive filesystems such as Mac's HFS+, 2193and you should say "make install-all". (This confusion is brought to you 2194by the Perl distribution having a file called INSTALL.) 2195 2196=head2 Installing perl under different names 2197 2198If you want to install perl under a name other than "perl" (for example, 2199when installing perl with special features enabled, such as debugging), 2200indicate the alternate name on the "make install" line, such as: 2201 2202 make install PERLNAME=myperl 2203 2204You can separately change the base used for versioned names (like 2205"perl5.8.9") by setting PERLNAME_VERBASE, like 2206 2207 make install PERLNAME=perl5 PERLNAME_VERBASE=perl 2208 2209This can be useful if you have to install perl as "perl5" (e.g. to avoid 2210conflicts with an ancient version in /usr/bin supplied by your vendor). 2211Without this the versioned binary would be called "perl55.8.8". 2212 2213=head2 Installing perl under a different directory 2214 2215You can install perl under a different destination directory by using 2216the DESTDIR variable during C<make install>, with a command like 2217 2218 make install DESTDIR=/tmp/perl5 2219 2220DESTDIR is automatically prepended to all the installation paths. See 2221the example in L<"DESTDIR"> above. 2222 2223=head2 Installed files 2224 2225If you want to see exactly what will happen without installing 2226anything, you can run 2227 2228 ./perl installperl -n 2229 ./perl installman -n 2230 2231make install will install the following: 2232 2233 binaries 2234 2235 perl, 2236 perl5.n.n where 5.n.n is the current release number. This 2237 will be a link to perl. 2238 2239 scripts 2240 2241 cppstdin This is used by the deprecated switch perl -P, 2242 if your cc -E can't read from stdin. 2243 corelist Shows versions of modules that come with 2244 different 2245 versions of perl. 2246 cpan The CPAN shell. 2247 enc2xs Encoding module generator. 2248 h2ph Extract constants and simple macros from C 2249 headers. 2250 h2xs Converts C .h header files to Perl extensions. 2251 instmodsh A shell to examine installed modules. 2252 libnetcfg Configure libnet. 2253 perlbug Tool to report bugs in Perl. 2254 perldoc Tool to read perl's pod documentation. 2255 perlivp Perl Installation Verification Procedure. 2256 piconv A Perl implementation of the encoding conversion 2257 utility iconv. 2258 pl2pm Convert Perl 4 .pl files to Perl 5 .pm modules. 2259 pod2html, Converters from perl's pod documentation format 2260 pod2man, 2261 pod2text, 2262 pod2usage 2263 podchecker POD syntax checker. 2264 podselect Prints sections of POD documentation. 2265 prove A command-line tool for running tests. 2266 psed A Perl implementation of sed. 2267 ptar A Perl implementation of tar. 2268 ptardiff A diff for tar archives. 2269 ptargrep A grep for tar archives. 2270 shasum A tool to print or check SHA checksums. 2271 splain Describe Perl warnings and errors. 2272 xsubpp Compiler to convert Perl XS code into C code. 2273 zipdetails display the internal structure of zip files 2274 2275 library files 2276 2277 in $privlib and $archlib specified to 2278 Configure, usually under /usr/local/lib/perl5/. 2279 2280 documentation 2281 2282 man pages in $man1dir, usually /usr/local/man/man1. 2283 module man 2284 pages in $man3dir, usually /usr/local/man/man3. 2285 pod/*.pod in $privlib/pod/. 2286 2287installperl will also create the directories listed above 2288in L<"Installation Directories">. 2289 2290Perl's *.h header files and the libperl library are also installed 2291under $archlib so that any user may later build new modules, run the 2292optional Perl compiler, or embed the perl interpreter into another 2293program even if the Perl source is no longer available. 2294 2295=head2 Installing with a version-specific suffix 2296 2297Sometimes you only want to install the perl distribution with a 2298version-specific suffix. For example, you may wish to install a newer 2299version of perl alongside an already installed production version. 2300To only install the version-specific parts of the perl installation, run 2301 2302 Configure -Dversiononly 2303 2304or answer 'y' to the appropriate Configure prompt. Alternatively, 2305you can just manually run 2306 2307 ./perl installperl -v 2308 2309and skip installman altogether. 2310 2311See also L<"Maintaining completely separate versions"> for another 2312approach. 2313 2314=head1 cd /usr/include; h2ph *.h sys/*.h 2315 2316Some perl scripts need to be able to obtain information from the 2317system header files. This command will convert the most commonly used 2318header files in /usr/include into files that can be easily interpreted 2319by perl. These files will be placed in the architecture-dependent 2320library ($archlib) directory you specified to Configure. 2321 2322Note: Due to differences in the C and perl languages, the conversion 2323of the header files is not perfect. You will probably have to 2324hand-edit some of the converted files to get them to parse correctly. 2325For example, h2ph breaks spectacularly on type casting and certain 2326structures. 2327 2328=head1 installhtml --help 2329 2330Some sites may wish to make perl documentation available in HTML 2331format. The installhtml utility can be used to convert pod 2332documentation into linked HTML files and install them. 2333 2334Currently, the supplied ./installhtml script does not make use of the 2335html Configure variables. This should be fixed in a future release. 2336 2337The following command-line is an example of one used to convert 2338perl documentation: 2339 2340 ./installhtml \ 2341 --podroot=. \ 2342 --podpath=lib:ext:pod:vms \ 2343 --recurse \ 2344 --htmldir=/perl/nmanual \ 2345 --htmlroot=/perl/nmanual \ 2346 --splithead=pod/perlipc \ 2347 --splititem=pod/perlfunc \ 2348 --verbose 2349 2350See the documentation in installhtml for more details. It can take 2351many minutes to execute a large installation and you should expect to 2352see warnings like "no title", "unexpected directive" and "cannot 2353resolve" as the files are processed. We are aware of these problems 2354(and would welcome patches for them). 2355 2356You may find it helpful to run installhtml twice. That should reduce 2357the number of "cannot resolve" warnings. 2358 2359=head1 cd pod && make tex && (process the latex files) 2360 2361Some sites may also wish to make the documentation in the pod/ directory 2362available in TeX format. Type 2363 2364 (cd pod && make tex && <process the latex files>) 2365 2366=head1 Starting all over again 2367 2368If you wish to rebuild perl from the same build directory, you should 2369clean it out with the command 2370 2371 make distclean 2372 2373or 2374 2375 make realclean 2376 2377The only difference between the two is that make distclean also removes 2378your old config.sh and Policy.sh files. (A plain 'make clean' is now 2379equivalent to 'make realclean'.) 2380 2381If you are upgrading from a previous version of perl, or if you 2382change systems or compilers or make other significant changes, or if 2383you are experiencing difficulties building perl, you should not reuse 2384your old config.sh. 2385 2386If your reason to reuse your old config.sh is to save your particular 2387installation choices, then you can probably achieve the same effect by 2388using the Policy.sh file. See the section on L<"Site-wide Policy 2389settings"> above. 2390 2391=head1 Reporting Problems 2392 2393Please report problems to the GitHub issue tracker at 2394https://github.com/Perl/perl5/issues, which will ask for the 2395appropriate summary configuration information about your perl, which 2396may help us track down problems far more quickly. But first you should 2397read the advice in this file, carefully re-read the error message and 2398check the relevant manual pages on your system, as these may help you 2399find an immediate solution. Once you've exhausted the documentation, 2400please report bugs to us using the GitHub tracker. 2401 2402The summary configuration information can be printed with C<perl -V>. 2403If the install fails, or you want to report problems with C<make test> 2404without installing perl, then you can run it by hand from this source 2405directory with C<./perl -V>. 2406 2407If the build fails too early to run perl, then please 2408B<run> the C<./myconfig> shell script, and include its output along 2409with an accurate description of your problem. 2410 2411If Configure itself fails, and does not generate a config.sh file 2412(needed to run C<./myconfig>), then please open an issue with the 2413description of how Configure fails along with details of your system 2414-- for example the output from running C<uname -a>. 2415 2416Please try to make your message brief but clear. Brief, clear bug 2417reports tend to get answered more quickly. Please don't worry if your 2418written English is not great -- what matters is how well you describe 2419the important technical details of the problem you have encountered, 2420not whether your grammar and spelling is flawless. 2421 2422Trim out unnecessary information. Do not include large files (such as 2423config.sh or a complete Configure or make log) unless absolutely 2424necessary. Do not include a complete transcript of your build 2425session. Just include the failing commands, the relevant error 2426messages, and whatever preceding commands are necessary to give the 2427appropriate context. 2428 2429If the bug you are reporting has security implications which make it 2430inappropriate to send to a public issue tracker, then see 2431L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> 2432for details of how to report the issue. 2433 2434If you are unsure what makes a good bug report please read "How to 2435report Bugs Effectively" by Simon Tatham: 2436L<https://www.chiark.greenend.org.uk/~sgtatham/bugs.html> 2437 2438=head1 Coexistence with earlier versions of perl 5 2439 2440Perl 5.32.1 is not binary compatible with versions of Perl earlier than 24415.32.0. 2442In other words, you will have to recompile your XS modules. 2443 2444In general, you can usually safely upgrade from one stable version of Perl 2445(e.g. 5.30.0) to another similar minor version (e.g. 5.30.1) without 2446re-compiling all of your extensions. You can also safely leave the old 2447version around in case the new version causes you problems for some 2448reason. 2449 2450Usually, most extensions will probably not need to be recompiled to be 2451used with a newer version of Perl. Here is how it is supposed to work. 2452(These examples assume you accept all the Configure defaults.) 2453 2454Suppose you already have version 5.8.7 installed. The directories 2455searched by 5.8.7 are typically like: 2456 2457 /usr/local/lib/perl5/5.8.7/$archname 2458 /usr/local/lib/perl5/5.8.7 2459 /usr/local/lib/perl5/site_perl/5.8.7/$archname 2460 /usr/local/lib/perl5/site_perl/5.8.7 2461 2462Now, suppose you install version 5.8.8. The directories 2463searched by version 5.8.8 will be: 2464 2465 /usr/local/lib/perl5/5.8.8/$archname 2466 /usr/local/lib/perl5/5.8.8 2467 /usr/local/lib/perl5/site_perl/5.8.8/$archname 2468 /usr/local/lib/perl5/site_perl/5.8.8 2469 2470 /usr/local/lib/perl5/site_perl/5.8.7/$archname 2471 /usr/local/lib/perl5/site_perl/5.8.7 2472 /usr/local/lib/perl5/site_perl/ 2473 2474Notice the last three entries -- Perl understands the default structure 2475of the $sitelib directories and will look back in older, compatible 2476directories. This way, modules installed under 5.8.7 will continue 2477to be usable by 5.8.7 but will also accessible to 5.8.8. Further, 2478suppose that you upgrade a module to one which requires features 2479present only in 5.8.8. That new module will get installed into 2480/usr/local/lib/perl5/site_perl/5.8.8 and will be available to 5.8.8, 2481but will not interfere with the 5.8.7 version. 2482 2483The last entry, /usr/local/lib/perl5/site_perl/, is there so that 24845.6.0 and above will look for 5.004-era pure perl modules. 2485 2486Lastly, suppose you now install 5.10.0, which is not binary compatible 2487with 5.8.x. The directories searched by 5.10.0 (if you don't change the 2488Configure defaults) will be: 2489 2490 /usr/local/lib/perl5/5.10.0/$archname 2491 /usr/local/lib/perl5/5.10.0 2492 /usr/local/lib/perl5/site_perl/5.10.0/$archname 2493 /usr/local/lib/perl5/site_perl/5.10.0 2494 2495 /usr/local/lib/perl5/site_perl/5.8.8 2496 2497 /usr/local/lib/perl5/site_perl/5.8.7 2498 2499 /usr/local/lib/perl5/site_perl/ 2500 2501Note that the earlier $archname entries are now gone, but pure perl 2502modules from earlier versions will still be found. 2503 2504This way, you can choose to share compatible extensions, but also upgrade 2505to a newer version of an extension that may be incompatible with earlier 2506versions, without breaking the earlier versions' installations. 2507 2508=head2 Maintaining completely separate versions 2509 2510Many users prefer to keep all versions of perl in completely 2511separate directories. This guarantees that an update to one version 2512won't interfere with another version. (The defaults guarantee this for 2513libraries after 5.6.0, but not for executables. TODO?) One convenient 2514way to do this is by using a separate prefix for each version, such as 2515 2516 sh Configure -Dprefix=/opt/perl5.32.1 2517 2518and adding /opt/perl5.32.1/bin to the shell PATH variable. Such users 2519may also wish to add a symbolic link /usr/local/bin/perl so that 2520scripts can still start with #!/usr/local/bin/perl. 2521 2522Others might share a common directory for maintenance sub-versions 2523(e.g. 5.10 for all 5.10.x versions), but change directory with 2524each major version. 2525 2526If you are installing a development subversion, you probably ought to 2527seriously consider using a separate directory, since development 2528subversions may not have all the compatibility wrinkles ironed out 2529yet. 2530 2531=head2 Upgrading from 5.31.11 or earlier 2532 2533B<Perl 5.32.1 may not be binary compatible with Perl 5.31.11 or 2534earlier Perl releases.> Perl modules having binary parts 2535(meaning that a C compiler is used) will have to be recompiled to be 2536used with 5.32.1. If you find you do need to rebuild an extension with 25375.32.1, you may safely do so without disturbing the older 2538installations. (See L<"Coexistence with earlier versions of perl 5"> 2539above.) 2540 2541See your installed copy of the perllocal.pod file for a (possibly 2542incomplete) list of locally installed modules. Note that you want 2543perllocal.pod, not perllocale.pod, for installed module information. 2544 2545=head1 Minimizing the Perl installation 2546 2547The following section is meant for people worrying about squeezing the 2548Perl installation into minimal systems (for example when installing 2549operating systems, or in really small filesystems). 2550 2551Leaving out as many extensions as possible is an obvious way: 2552Encode, with its big conversion tables, consumes a lot of 2553space. On the other hand, you cannot throw away everything. The 2554Fcntl module is pretty essential. If you need to do network 2555programming, you'll appreciate the Socket module, and so forth: it all 2556depends on what do you need to do. 2557 2558In the following we offer two different slimmed down installation 2559recipes. They are informative, not normative: the choice of files 2560depends on what you need. 2561 2562Firstly, the bare minimum to run this script 2563 2564 use strict; 2565 use warnings; 2566 foreach my $f (</*>) { 2567 print("$f\n"); 2568 } 2569 2570in Linux with perl-5.32.1 is as follows (under $Config{prefix}): 2571 2572 ./bin/perl 2573 ./lib/perl5/5.32.1/strict.pm 2574 ./lib/perl5/5.32.1/warnings.pm 2575 ./lib/perl5/5.32.1/i686-linux/File/Glob.pm 2576 ./lib/perl5/5.32.1/feature.pm 2577 ./lib/perl5/5.32.1/XSLoader.pm 2578 ./lib/perl5/5.32.1/i686-linux/auto/File/Glob/Glob.so 2579 2580Secondly, for perl-5.10.1, the Debian perl-base package contains 591 2581files, (of which 510 are for lib/unicore) totaling about 3.5MB in its 2582i386 version. Omitting the lib/unicore/* files for brevity, the 2583remaining files are: 2584 2585 /usr/bin/perl 2586 /usr/bin/perl5.10.1 2587 /usr/lib/perl/5.10.1/Config.pm 2588 /usr/lib/perl/5.10.1/Config_git.pl 2589 /usr/lib/perl/5.10.1/Config_heavy.pl 2590 /usr/lib/perl/5.10.1/Cwd.pm 2591 /usr/lib/perl/5.10.1/DynaLoader.pm 2592 /usr/lib/perl/5.10.1/Errno.pm 2593 /usr/lib/perl/5.10.1/Fcntl.pm 2594 /usr/lib/perl/5.10.1/File/Glob.pm 2595 /usr/lib/perl/5.10.1/Hash/Util.pm 2596 /usr/lib/perl/5.10.1/IO.pm 2597 /usr/lib/perl/5.10.1/IO/File.pm 2598 /usr/lib/perl/5.10.1/IO/Handle.pm 2599 /usr/lib/perl/5.10.1/IO/Pipe.pm 2600 /usr/lib/perl/5.10.1/IO/Seekable.pm 2601 /usr/lib/perl/5.10.1/IO/Select.pm 2602 /usr/lib/perl/5.10.1/IO/Socket.pm 2603 /usr/lib/perl/5.10.1/IO/Socket/INET.pm 2604 /usr/lib/perl/5.10.1/IO/Socket/UNIX.pm 2605 /usr/lib/perl/5.10.1/List/Util.pm 2606 /usr/lib/perl/5.10.1/POSIX.pm 2607 /usr/lib/perl/5.10.1/Scalar/Util.pm 2608 /usr/lib/perl/5.10.1/Socket.pm 2609 /usr/lib/perl/5.10.1/XSLoader.pm 2610 /usr/lib/perl/5.10.1/auto/Cwd/Cwd.so 2611 /usr/lib/perl/5.10.1/auto/DynaLoader/autosplit.ix 2612 /usr/lib/perl/5.10.1/auto/DynaLoader/dl_expandspec.al 2613 /usr/lib/perl/5.10.1/auto/DynaLoader/dl_find_symbol_anywhere.al 2614 /usr/lib/perl/5.10.1/auto/DynaLoader/dl_findfile.al 2615 /usr/lib/perl/5.10.1/auto/Fcntl/Fcntl.so 2616 /usr/lib/perl/5.10.1/auto/File/Glob/Glob.so 2617 /usr/lib/perl/5.10.1/auto/Hash/Util/Util.so 2618 /usr/lib/perl/5.10.1/auto/IO/IO.so 2619 /usr/lib/perl/5.10.1/auto/List/Util/Util.so 2620 /usr/lib/perl/5.10.1/auto/POSIX/POSIX.so 2621 /usr/lib/perl/5.10.1/auto/POSIX/autosplit.ix 2622 /usr/lib/perl/5.10.1/auto/POSIX/load_imports.al 2623 /usr/lib/perl/5.10.1/auto/Socket/Socket.so 2624 /usr/lib/perl/5.10.1/lib.pm 2625 /usr/lib/perl/5.10.1/re.pm 2626 /usr/share/doc/perl/AUTHORS.gz 2627 /usr/share/doc/perl/Documentation 2628 /usr/share/doc/perl/README.Debian 2629 /usr/share/doc/perl/changelog.Debian.gz 2630 /usr/share/doc/perl/copyright 2631 /usr/share/lintian/overrides/perl-base 2632 /usr/share/man/man1/perl.1.gz 2633 /usr/share/man/man1/perl5.10.1.1.gz 2634 /usr/share/perl/5.10.1/AutoLoader.pm 2635 /usr/share/perl/5.10.1/Carp.pm 2636 /usr/share/perl/5.10.1/Carp/Heavy.pm 2637 /usr/share/perl/5.10.1/Exporter.pm 2638 /usr/share/perl/5.10.1/Exporter/Heavy.pm 2639 /usr/share/perl/5.10.1/File/Spec.pm 2640 /usr/share/perl/5.10.1/File/Spec/Unix.pm 2641 /usr/share/perl/5.10.1/FileHandle.pm 2642 /usr/share/perl/5.10.1/Getopt/Long.pm 2643 /usr/share/perl/5.10.1/IPC/Open2.pm 2644 /usr/share/perl/5.10.1/IPC/Open3.pm 2645 /usr/share/perl/5.10.1/SelectSaver.pm 2646 /usr/share/perl/5.10.1/Symbol.pm 2647 /usr/share/perl/5.10.1/Text/ParseWords.pm 2648 /usr/share/perl/5.10.1/Text/Tabs.pm 2649 /usr/share/perl/5.10.1/Text/Wrap.pm 2650 /usr/share/perl/5.10.1/Tie/Hash.pm 2651 /usr/share/perl/5.10.1/attributes.pm 2652 /usr/share/perl/5.10.1/base.pm 2653 /usr/share/perl/5.10.1/bytes.pm 2654 /usr/share/perl/5.10.1/bytes_heavy.pl 2655 /usr/share/perl/5.10.1/constant.pm 2656 /usr/share/perl/5.10.1/fields.pm 2657 /usr/share/perl/5.10.1/integer.pm 2658 /usr/share/perl/5.10.1/locale.pm 2659 /usr/share/perl/5.10.1/overload.pm 2660 /usr/share/perl/5.10.1/strict.pm 2661 /usr/share/perl/5.10.1/unicore/* 2662 /usr/share/perl/5.10.1/utf8.pm 2663 /usr/share/perl/5.10.1/utf8_heavy.pl 2664 /usr/share/perl/5.10.1/vars.pm 2665 /usr/share/perl/5.10.1/warnings.pm 2666 /usr/share/perl/5.10.1/warnings/register.pm 2667 2668A nice trick to find out the minimal set of Perl library files you will 2669need to run a Perl program is 2670 2671 perl -e 'do "prog.pl"; END { print "$_\n" for sort keys %INC }' 2672 2673(this will not find libraries required in runtime, unfortunately, but 2674it's a minimal set) and if you want to find out all the files you can 2675use something like the below 2676 2677 strace perl -le 'do "x.pl"' 2>&1 \ 2678 | perl -nle '/^open\(\"(.+?)"/ && print $1' 2679 2680(The 'strace' is Linux-specific, other similar utilities include 'truss' 2681and 'ktrace'.) 2682 2683=head2 C<-DNO_MATHOMS> 2684 2685If you configure perl with C<-Accflags=-DNO_MATHOMS>, the functions from 2686F<mathoms.c> will not be compiled in. Those functions are no longer used 2687by perl itself; for source compatibility reasons, though, they weren't 2688completely removed. 2689 2690=head2 C<-DNO_PERL_INTERNAL_RAND_SEED> 2691X<PERL_INTERNAL_RAND_SEED> 2692 2693If you configure perl with C<-Accflags=-DNO_PERL_INTERNAL_RAND_SEED>, 2694perl will ignore the C<PERL_INTERNAL_RAND_SEED> environment variable. 2695 2696=head1 DOCUMENTATION 2697 2698Read the manual entries before running perl. The main documentation 2699is in the F<pod/> subdirectory and should have been installed during the 2700build process. Type B<man perl> to get started. Alternatively, you 2701can type B<perldoc perl> to use the supplied perldoc script. This is 2702sometimes useful for finding things in the library modules. 2703 2704=head1 AUTHOR 2705 2706Original author: Andy Dougherty doughera@lafayette.edu , borrowing very 2707heavily from the original README by Larry Wall, with lots of helpful 2708feedback and additions from the perl5-porters@perl.org folks. 2709 2710If you have problems, corrections, or questions, please see 2711L<"Reporting Problems"> above. 2712 2713=head1 REDISTRIBUTION 2714 2715This document is part of the Perl package and may be distributed under 2716the same terms as perl itself, with the following additional request: 2717If you are distributing a modified version of perl (perhaps as part of 2718a larger package) please B<do> modify these installation instructions 2719and the contact information to match your distribution. Additional 2720information for packagers is in F<PACKAGING>. 2721