{
    "mode": "man",
    "parameter": "perlsolaris",
    "section": "1",
    "url": "https://www.chedong.com/phpMan.php/man/perlsolaris/1/json",
    "generated": "2026-08-22T02:34:46Z",
    "sections": {
        "NAME": {
            "content": "perlsolaris - Perl version 5 on Solaris systems\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "This document describes various features of Sun's Solaris operating system that will affect\nhow Perl version 5 (hereafter just perl) is compiled and/or runs.  Some issues relating to\nthe older SunOS 4.x are also discussed, though they may be out of date.\n\nFor the most part, everything should just work.\n\nStarting with Solaris 8, perl5.00503 (or higher) is supplied with the operating system, so\nyou might not even need to build a newer version of perl at all.  The Sun-supplied version is\ninstalled in /usr/perl5 with /usr/bin/perl pointing to /usr/perl5/bin/perl.  Do not disturb\nthat installation unless you really know what you are doing.  If you remove the perl supplied\nwith the OS, you will render some bits of your system inoperable.  If you wish to install a\nnewer version of perl, install it under a different prefix from /usr/perl5.  Common prefixes\nto use are /usr/local and /opt/perl.\n\nYou may wish to put your version of perl in the PATH of all users by changing the link\n/usr/bin/perl.  This is probably OK, as most perl scripts shipped with Solaris use an\nexplicit path.  (There are a few exceptions, such as /usr/bin/rpm2cpio and\n/etc/rcm/scripts/README, but these are also sufficiently generic that the actual version of\nperl probably doesn't matter too much.)\n\nSolaris ships with a range of Solaris-specific modules.  If you choose to install your own\nversion of perl you will find the source of many of these modules is available on CPAN under\nthe Sun::Solaris:: namespace.\n\nSolaris may include two versions of perl, e.g. Solaris 9 includes both 5.00503 and 5.6.1.\nThis is to provide stability across Solaris releases, in cases where a later perl version has\nincompatibilities with the version included in the preceding Solaris release.  The default\nperl version will always be the most recent, and in general the old version will only be\nretained for one Solaris release.  Note also that the default perl will NOT be configured to\nsearch for modules in the older version, again due to compatibility/stability concerns.  As a\nconsequence if you upgrade Solaris, you will have to rebuild/reinstall any additional CPAN\nmodules that you installed for the previous Solaris version.  See the CPAN manpage under\n'autobundle' for a quick way of doing this.\n\nAs an interim measure, you may either change the #! line of your scripts to specifically\nrefer to the old perl version, e.g. on Solaris 9 use #!/usr/perl5/5.00503/bin/perl to use the\nperl version that was the default for Solaris 8, or if you have a large number of scripts it\nmay be more convenient to make the old version of perl the default on your system.  You can\ndo this by changing the appropriate symlinks under /usr/perl5 as follows (example for Solaris\n9):\n\n# cd /usr/perl5\n# rm bin man pod\n# ln -s ./5.00503/bin\n# ln -s ./5.00503/man\n# ln -s ./5.00503/lib/pod\n# rm /usr/bin/perl\n# ln -s ../perl5/5.00503/bin/perl /usr/bin/perl\n\nIn both cases this should only be considered to be a temporary measure - you should upgrade\nto the later version of perl as soon as is practicable.\n\nNote also that the perl command-line utilities (e.g. perldoc) and any that are added by\nmodules that you install will be under /usr/perl5/bin, so that directory should be added to\nyour PATH.\n",
            "subsections": [
                {
                    "name": "Solaris Version Numbers.",
                    "content": "For consistency with common usage, perl's Configure script performs some minor manipulations\non the operating system name and version number as reported by uname.  Here's a partial\ntranslation table:\n\nSun:                      perl's Configure:\nuname    uname -r   Name           osname     osvers\nSunOS    4.1.3     Solaris 1.1     sunos      4.1.3\nSunOS    5.6       Solaris 2.6     solaris    2.6\nSunOS    5.8       Solaris 8       solaris    2.8\nSunOS    5.9       Solaris 9       solaris    2.9\nSunOS    5.10      Solaris 10      solaris    2.10\n\nThe complete table can be found in the Sun Managers' FAQ\n<ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq> under \"9.1) Which Sun models run which\nversions of SunOS?\".\n"
                }
            ]
        },
        "RESOURCES": {
            "content": "There are many, many sources for Solaris information.  A few of the important ones for perl:\n\nSolaris FAQ\nThe Solaris FAQ is available at <http://www.science.uva.nl/pub/solaris/solaris2.html>.\n\nThe Sun Managers' FAQ is available at <ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq>\n\nPrecompiled Binaries\nPrecompiled  binaries,  links  to  many  sites,  and  much,  much  more  are available at\n<http://www.sunfreeware.com/> and <http://www.blastwave.org/>.\n\nSolaris Documentation\nAll Solaris documentation is available on-line at <http://docs.sun.com/>.\n",
            "subsections": []
        },
        "SETTING UP": {
            "content": "",
            "subsections": [
                {
                    "name": "File Extraction Problems on Solaris.",
                    "content": "Be sure to use a  tar  program  compiled  under  Solaris  (not  SunOS  4.x)  to  extract  the\nperl-5.x.x.tar.gz  file.   Do  not  use  GNU  tar  compiled  for SunOS4 on Solaris.  (GNU tar\ncompiled for Solaris should be fine.)  When you run SunOS4 binaries on Solaris, the  run-time\nsystem  magically  alters  pathnames  matching m#lib/locale# so that when tar tries to create\nlib/locale.pm, a file named lib/oldlocale.pm gets created instead.  If you found this  advice\ntoo  late  and  used a SunOS4-compiled tar anyway, you must find the incorrectly renamed file\nand move it back to lib/locale.pm.\n"
                },
                {
                    "name": "Compiler and Related Tools on Solaris.",
                    "content": "You must use an ANSI C compiler to build perl.  Perl can be compiled with either Sun's add-on\nC compiler or with gcc.  The C compiler that shipped with SunOS4 will not do.\n\nInclude /usr/ccs/bin/ in your PATH.\n\nSeveral tools needed to build perl are located in /usr/ccs/bin/:  ar, as, ld, and make.  Make\nsure that /usr/ccs/bin/ is in your PATH.\n\nOn all the released versions of Solaris (8, 9 and 10) you need to  make  sure  the  following\npackages are installed (this info is extracted from the Solaris FAQ):\n\nfor tools (sccs, lex, yacc, make, nm, truss, ld, as): SUNWbtool, SUNWsprot, SUNWtoo\n\nfor libraries & headers: SUNWhea, SUNWarc, SUNWlibm, SUNWlibms, SUNWdfbh, SUNWcg6h, SUNWxwinc\n\nAdditionally, on Solaris 8 and 9 you also need:\n\nfor  64  bit  development:  SUNWarcx,  SUNWbtoox,  SUNWdplx,  SUNWscpux, SUNWsprox, SUNWtoox,\nSUNWlmsx, SUNWlmx, SUNWlibCx\n\nAnd only on Solaris 8 you also need:\n\nfor libraries & headers: SUNWolinc\n\nIf you are in doubt  which  package  contains  a  file  you  are  missing,  try  to  find  an\ninstallation that has that file. Then do a\n\n$ grep /my/missing/file /var/sadm/install/contents\n\nThis will display a line like this:\n\n/usr/include/sys/errno.h f none 0644 root bin 7471 37605 956241356 SUNWhea\n\nThe last item listed (SUNWhea in this example) is the package you need.\n\nAvoid /usr/ucb/cc.\n\nYou  don't  need to have /usr/ucb/ in your PATH to build perl.  If you want /usr/ucb/ in your\nPATH anyway, make sure that /usr/ucb/ is NOT in your PATH before the directory containing the\nright C compiler.\n\nSun's C Compiler\n\nIf you use Sun's C compiler, make sure the correct directory (usually /opt/SUNWspro/bin/)  is\nin your PATH (before /usr/ucb/).\n\nGCC\n\nIf  you  use  gcc,  make  sure your installation is recent and complete.  perl versions since\n5.6.0 build fine with gcc > 2.8.1 on Solaris >= 2.6.\n\nYou must Configure perl with\n\n$ sh Configure -Dcc=gcc\n\nIf you don't, you may experience strange build errors.\n\nIf you have updated your Solaris version, you may also have to update your gcc.  For example,\nif you are running Solaris  2.6  and  your  gcc  is  installed  under  /usr/local,  check  in\n/usr/local/lib/gcc-lib    and    make    sure    you    have   the   appropriate   directory,\nsparc-sun-solaris2.6/ or i386-pc-solaris2.6/.  If gcc's directory is for a different  version\nof  Solaris  than  you are running, then you will need to rebuild gcc for your new version of\nSolaris.\n\nYou  can  get  a  precompiled  version   of   gcc   from   <http://www.sunfreeware.com/>   or\n<http://www.blastwave.org/>. Make sure you pick up the package for your Solaris release.\n\nIf  you  wish  to use gcc to build add-on modules for use with the perl shipped with Solaris,\nyou should use the Solaris::PerlGcc module which is available from CPAN.   The  perl  shipped\nwith  Solaris  is configured and built with the Sun compilers, and the compiler configuration\ninformation stored in Config.pm is  therefore  only  relevant  to  the  Sun  compilers.   The\nSolaris:PerlGcc  module  contains  a  replacement Config.pm that is correct for gcc - see the\nmodule for details.\n\nGNU as and GNU ld\n\nThe following information applies to gcc version 2.  Volunteers to update it as appropriately\nfor gcc version 3 would be appreciated.\n\nThe versions of as and ld supplied with Solaris  work  fine  for  building  perl.   There  is\nnormally no need to install the GNU versions to compile perl.\n\nIf  you  decide to ignore this advice and use the GNU versions anyway, then be sure that they\nare relatively recent.  Versions newer than 2.7 are apparently new  enough.   Older  versions\nmay have trouble with dynamic loading.\n\nIf  you wish to use GNU ld, then you need to pass it the -Wl,-E flag.  The hints/solaris2.sh\nfile tries to do this automatically by setting the following Configure variables:\n\nccdlflags=\"$ccdlflags -Wl,-E\"\nlddlflags=\"$lddlflags -Wl,-E -G\"\n\nHowever, over the years, changes in gcc, GNU ld, and Solaris ld have  made  it  difficult  to\nautomatically  detect  which  ld  ultimately  gets  called.   You  may  have to manually edit\nconfig.sh and add the -Wl,-E flags yourself, or else run Configure interactively and add  the\nflags at the appropriate prompts.\n\nIf  your  gcc is configured to use GNU as and ld but you want to use the Solaris ones instead\nto build perl, then you'll need  to  add  -B/usr/ccs/bin/  to  the  gcc  command  line.   One\nconvenient way to do that is with\n\n$ sh Configure -Dcc='gcc -B/usr/ccs/bin/'\n\nNote  that  the  trailing  slash  is required.  This will result in some harmless warnings as\nConfigure is run:\n\ngcc: file path prefix `/usr/ccs/bin/' never used\n\nThese messages may safely be ignored.  (Note that for a SunOS4 system, you must  use  -B/bin/\ninstead.)\n\nAlternatively,  you  can use the GCCEXECPREFIX environment variable to ensure that Sun's as\nand ld are used.  Consult your gcc documentation for further information on the -B option and\nthe GCCEXECPREFIX variable.\n\nSun and GNU make\n\nThe make under /usr/ccs/bin works fine for building perl.  If you have the Sun  C  compilers,\nyou  will  also  have a parallel version of make (dmake).  This works fine to build perl, but\ncan sometimes cause problems when running 'make  test'  due  to  underspecified  dependencies\nbetween  the  different test harness files.  The same problem can also affect the building of\nsome add-on modules, so in those cases either specify '-m serial' on the dmake command  line,\nor use /usr/ccs/bin/make instead.  If you wish to use GNU make, be sure that the set-group-id\nbit  is  not  set.   If it is, then arrange your PATH so that /usr/ccs/bin/make is before GNU\nmake or else have the system administrator disable the set-group-id bit on GNU make.\n\nAvoid libucb.\n\nSolaris provides some BSD-compatibility functions in  /usr/ucblib/libucb.a.   Perl  will  not\nbuild  and  run  correctly  if  linked  against  -lucb  since  it  contains routines that are\nincompatible with the standard Solaris libc.  Normally  this  is  not  a  problem  since  the\nsolaris  hints  file  prevents  Configure from even looking in /usr/ucblib for libraries, and\nalso explicitly omits -lucb.\n"
                },
                {
                    "name": "Environment for Compiling perl on Solaris",
                    "content": "PATH\n\nMake sure your PATH includes the compiler (/opt/SUNWspro/bin/ if you're using Sun's compiler)\nas well as /usr/ccs/bin/ to pick up the other development tools (such as make,  ar,  as,  and\nld).   Make  sure  your path either doesn't include /usr/ucb or that it includes it after the\ncompiler and compiler tools and other standard Solaris  directories.   You  definitely  don't\nwant /usr/ucb/cc.\n\nLDLIBRARYPATH\n\nIf  you  have  the LDLIBRARYPATH environment variable set, be sure that it does NOT include\n/lib or /usr/lib.  If you will be building extensions that call third-party shared  libraries\n(e.g. Berkeley DB) then make sure that your LDLIBRARYPATH environment variable includes the\ndirectory with that library (e.g. /usr/local/lib).\n\nIf you get an error message\n\ndlopen: stub interception failed\n\nit  is  probably because your LDLIBRARYPATH environment variable includes a directory which\nis a symlink to /usr/lib (such as /lib).  The reason this causes a problem is  quite  subtle.\nThe  file  libdl.so.1.0  actually *only* contains functions which generate 'stub interception\nfailed' errors!  The runtime linker intercepts links to \"/usr/lib/libdl.so.1.0\" and links  in\ninternal  implementations  of  those  functions  instead.   [Thanks  to  Tim  Bunce  for this\nexplanation.]\n\nRUN CONFIGURE.\nSee the INSTALL file for general  information  regarding  Configure.   Only  Solaris-specific\nissues are discussed here.  Usually, the defaults should be fine.\n"
                },
                {
                    "name": "64-bit perl on Solaris.",
                    "content": "See  the  INSTALL  file  for  general information regarding 64-bit compiles.  In general, the\ndefaults should be fine for most people.\n\nBy default, perl-5.6.0 (or later) is compiled as a  32-bit  application  with  largefile  and\nlong-long support.\n\nGeneral 32-bit vs. 64-bit issues.\n\nSolaris 7 and above will run in either 32 bit or 64 bit mode on SPARC CPUs, via a reboot. You\ncan  build  64 bit apps whilst running 32 bit mode and vice-versa. 32 bit apps will run under\nSolaris running in either 32 or 64 bit mode.  64 bit apps require Solaris to  be  running  64\nbit mode.\n\nExisting  32 bit apps are properly known as LP32, i.e. Longs and Pointers are 32 bit.  64-bit\napps are more properly known as LP64.  The discriminating feature of a LP64 bit  app  is  its\nability  to  utilise a 64-bit address space.  It is perfectly possible to have a LP32 bit app\nthat supports both 64-bit integers (long long) and  largefiles  (>  2GB),  and  this  is  the\ndefault for perl-5.6.0.\n\nFor  a more complete explanation of 64-bit issues, see the \"Solaris 64-bit Developer's Guide\"\nat <http://docs.sun.com/>\n\nYou can detect the OS mode using \"isainfo -v\", e.g.\n\n$ isainfo -v   # Ultra 30 in 64 bit mode\n64-bit sparcv9 applications\n32-bit sparc applications\n\nBy default, perl will be compiled as a 32-bit application.  Unless you want to allocate  more\nthan ~ 4GB of memory inside perl, or unless you need more than 255 open file descriptors, you\nprobably don't need perl to be a 64-bit app.\n\nLarge File Support\n\nFor  Solaris  2.6  and  onwards,  there  are  two  different  ways for 32-bit applications to\nmanipulate large files (files whose size is > 2GByte).  (A 64-bit  application  automatically\nhas largefile support built in by default.)\n\nFirst  is the \"transitional compilation environment\", described in lfcompile64(5).  According\nto the man page,\n\nThe transitional compilation  environment  exports  all  the\nexplicit 64-bit functions (xxx64()) and types in addition to\nall the regular functions (xxx()) and types. Both xxx()  and\nxxx64()  functions  are  available to the program source.  A\n32-bit application must use the xxx64() functions in  order\nto  access  large  files.  See the lf64(5) manual page for a\ncomplete listing of the 64-bit transitional interfaces.\n\nThe transitional compilation environment is obtained with the following compiler  and  linker\nflags:\n\ngetconf LFS64CFLAGS        -DLARGEFILE64SOURCE\ngetconf LFS64LDFLAG        # nothing special needed\ngetconf LFS64LIBS          # nothing special needed\n\nSecond  is the \"large file compilation environment\", described in lfcompile(5).  According to\nthe man page,\n\nEach interface named xxx() that needs to access 64-bit entities\nto  access  large  files maps to a xxx64() call in the\nresulting binary. All relevant data types are defined to  be\nof correct size (for example, offt has a typedef definition\nfor a 64-bit entity).\n\nAn application compiled in this environment is able  to  use\nthe  xxx()  source interfaces to access both large and small\nfiles, rather than having to explicitly utilize the  transitional\nxxx64()  interface  calls to access large files.\n\nTwo exceptions are fseek() and  ftell().   32-bit  applications  should  use  fseeko(3C)  and\nftello(3C).  These will get automatically mapped to fseeko64() and ftello64().\n\nThe large file compilation environment is obtained with\n\ngetconf LFSCFLAGS      -DLARGEFILESOURCE -DFILEOFFSETBITS=64\ngetconf LFSLDFLAGS     # nothing special needed\ngetconf LFSLIBS        # nothing special needed\n\nBy  default, perl uses the large file compilation environment and relies on Solaris to do the\nunderlying mapping of interfaces.\n\nBuilding an LP64 perl\n\nTo compile a 64-bit application on an UltraSparc with a recent Sun Compiler, you need to  use\nthe flag \"-xarch=v9\".  getconf(1) will tell you this, e.g.\n\n$ getconf -a | grep v9\nXBS5LP64OFF64CFLAGS:         -xarch=v9\nXBS5LP64OFF64LDFLAGS:        -xarch=v9\nXBS5LP64OFF64LINTFLAGS:      -xarch=v9\nXBS5LPBIGOFFBIGCFLAGS:       -xarch=v9\nXBS5LPBIGOFFBIGLDFLAGS:      -xarch=v9\nXBS5LPBIGOFFBIGLINTFLAGS:    -xarch=v9\nXBS5LP64OFF64CFLAGS:        -xarch=v9\nXBS5LP64OFF64LDFLAGS:       -xarch=v9\nXBS5LP64OFF64LINTFLAGS:     -xarch=v9\nXBS5LPBIGOFFBIGCFLAGS:      -xarch=v9\nXBS5LPBIGOFFBIGLDFLAGS:     -xarch=v9\nXBS5LPBIGOFFBIGLINTFLAGS:   -xarch=v9\n\nThis flag is supported in Sun WorkShop Compilers 5.0 and onwards (now marketed under the name\nForte) when used on Solaris 7 or later on UltraSparc systems.\n\nIf  you  are  using gcc, you would need to use -mcpu=v9 -m64 instead.  This option is not yet\nsupported as of gcc 2.95.2; from install/SPECIFIC in that release:\n\nGCC version 2.95 is not able to compile code correctly for sparc64\ntargets. Users of the Linux kernel, at least, can use the sparc32\nprogram to start up a new shell invocation with an environment that\ncauses configure to recognize (via uname -a) the system as sparc-*-*\ninstead.\n\nAll this should be handled automatically by the hints file, if requested.\n\nLong Doubles.\n\nAs of 5.8.1, long doubles are working if you use the Sun  compilers  (needed  for  additional\nmath routines not included in libm).\n"
                },
                {
                    "name": "Threads in perl on Solaris.",
                    "content": "It  is  possible  to  build  a  threaded  version of perl on Solaris.  The entire perl thread\nimplementation is still experimental, however, so beware.\n"
                },
                {
                    "name": "Malloc Issues with perl on Solaris.",
                    "content": "Starting from perl 5.7.1 perl uses the Solaris malloc, since  the  perl  malloc  breaks  when\ndealing with more than 2GB of memory, and the Solaris malloc also seems to be faster.\n\nIf  you  for  some  reason  (such as binary backward compatibility) really need to use perl's\nmalloc, you can rebuild perl from the sources and Configure the build with\n\n$ sh Configure -Dusemymalloc\n\nYou should not use perl's malloc if you are building with gcc.  There  are  reports  of  core\ndumps, especially in the PDL module.  The problem appears to go away under -DDEBUGGING, so it\nhas  been  difficult to track down.  Sun's compiler appears to be okay with or without perl's\nmalloc. [XXX further investigation is needed here.]\n\nMAKE PROBLEMS.\nDynamic Loading Problems With GNU as and GNU ld\nIf you have problems with dynamic loading using gcc on SunOS  or  Solaris,  and  you  are\nusing GNU as and GNU ld, see the section \"GNU as and GNU ld\" above.\n\nld.so.1: ./perl: fatal: relocation error:\nIf  you get this message on SunOS or Solaris, and you're using gcc, it's probably the GNU\nas or GNU ld problem in the previous item \"GNU as and GNU ld\".\n\ndlopen: stub interception failed\nThe primary cause  of  the  'dlopen:  stub  interception  failed'  message  is  that  the\nLDLIBRARYPATH  environment variable includes a directory which is a symlink to /usr/lib\n(such as /lib).  See \"LDLIBRARYPATH\" above.\n\n#error \"No DATAMODELNATIVE specified\"\nThis is a common error when trying to build perl on Solaris 2.6 with a  gcc  installation\nfrom  Solaris 2.5 or 2.5.1.  The Solaris header files changed, so you need to update your\ngcc installation.  You can either rerun the fixincludes  script  from  gcc  or  take  the\nopportunity to update your gcc installation.\n\nsh: ar: not found\nThis  is  a message from your shell telling you that the command 'ar' was not found.  You\nneed to check your PATH environment variable to make sure that it includes the  directory\nwith  the  'ar'  command.   This  is  a  common  problem on Solaris, where 'ar' is in the\n/usr/ccs/bin/ directory.\n"
                }
            ]
        },
        "MAKE TEST": {
            "content": "",
            "subsections": [
                {
                    "name": "op/stat.t test 4 in Solaris",
                    "content": "op/stat.t test 4 may fail if you are on a tmpfs of some sort.   Building  in  /tmp  sometimes\nshows  this  behavior.  The test suite detects if you are building in /tmp, but it may not be\nable to catch all tmpfs situations.\n"
                },
                {
                    "name": "nss_delete core dump from op/pwent or op/grent",
                    "content": "See \"nssdelete core dump from op/pwent or op/grent\" in perlhpux.\n"
                }
            ]
        },
        "CROSS-COMPILATION": {
            "content": "Nothing too unusual here.  You can easily do this if you have a cross-compiler available;   A\nusual Configure invocation when targetting a Solaris x86 looks something like this:\n\nsh ./Configure -des -Dusecrosscompile \\\n-Dcc=i386-pc-solaris2.11-gcc      \\\n-Dsysroot=$SYSROOT                \\\n-Alddlflags=\" -Wl,-z,notext\"      \\\n-Dtargethost=... # The usual cross-compilation options\n\nThe lddlflags addition is the only abnormal bit.\n\nPREBUILT BINARIES OF PERL FOR SOLARIS.\nYou   can   pick   up  prebuilt  binaries  for  Solaris  from  <http://www.sunfreeware.com/>,\n<http://www.blastwave.org>,       ActiveState       <http://www.activestate.com/>,        and\n<http://www.perl.com/>  under  the  Binaries list at the top of the page.  There are probably\nother sources as well.  Please  note  that  these  sites  are  under  the  control  of  their\nrespective owners, not the perl developers.\n\nRUNTIME ISSUES FOR PERL ON SOLARIS.",
            "subsections": [
                {
                    "name": "Limits on Numbers of Open Files on Solaris.",
                    "content": "The  stdio(3C)  manpage  notes that for LP32 applications, only 255 files may be opened using\nfopen(), and only file descriptors 0 through 255 can be used in a stream.  Since  perl  calls\nopen()  and  then  fdopen(3C)  with  the  resulting  file  descriptor, perl is limited to 255\nsimultaneous open files, even if sysopen() is used.  If this proves to be  an  insurmountable\nproblem, you can compile perl as a LP64 application, see \"Building an LP64 perl\" for details.\nNote also that the default resource limit for open file descriptors on Solaris is 255, so you\nwill have to modify your ulimit or rctl (Solaris 9 onwards) appropriately.\n\nSOLARIS-SPECIFIC MODULES.\nSee   the   modules   under   the   Solaris::   and  Sun::Solaris  namespaces  on  CPAN,  see\n<http://www.cpan.org/modules/by-module/Solaris/>                                          and\n<http://www.cpan.org/modules/by-module/Sun/>.\n\nSOLARIS-SPECIFIC PROBLEMS WITH MODULES."
                },
                {
                    "name": "Proc::ProcessTable on Solaris",
                    "content": "Proc::ProcessTable  does  not  compile  on  Solaris  with  perl5.6.0  and  higher if you have\nLARGEFILES defined.  Since largefile support is the default in 5.6.0 and later, you  have  to\ntake special steps to use this module.\n\nThe  problem is that various structures visible via procfs use offt, and if you compile with\nlargefile support these change from 32 bits to 64 bits.  Thus what you get back  from  procfs\ndoesn't  match up with the structures in perl, resulting in garbage.  See proc(4) for further\ndiscussion.\n\nA fix for Proc::ProcessTable is to edit Makefile to explicitly  remove  the  largefile  flags\nfrom  the  ones  MakeMaker  picks  up from Config.pm.  This will result in Proc::ProcessTable\nbeing built under the  correct  environment.   Everything  should  then  be  OK  as  long  as\nProc::ProcessTable  doesn't  try  to  share offt's with the rest of perl, or if it does they\nshould be explicitly specified as off64t.\n"
                },
                {
                    "name": "BSD::Resource on Solaris",
                    "content": "BSD::Resource versions earlier than 1.09 do not  compile  on  Solaris  with  perl  5.6.0  and\nhigher,  for  the  same  reasons as Proc::ProcessTable.  BSD::Resource versions starting from\n1.09 have a workaround for the problem.\n"
                },
                {
                    "name": "Net::SSLeay on Solaris",
                    "content": "Net::SSLeay requires a /dev/urandom to be present. This device is available  from  Solaris  9\nonwards.   For earlier Solaris versions you can either get the package SUNWski (packaged with\nseveral Sun software products, for example the Sun WebServer, which is part  of  the  Solaris\nServer  Intranet  Extension,  or  the  Sun  Directory  Services, part of Solaris for ISPs) or\ndownload the ANDIrand package from <http://www.cosy.sbg.ac.at/~andi/>. If  you  use  SUNWski,\nmake  a  symbolic  link /dev/urandom pointing to /dev/random.  For more details, see Document\nID27606 entitled \"Differing /dev/random support  requirements  within  Solaris[TM]  Operating\nEnvironments\", available at <http://sunsolve.sun.com> .\n\nIt  may  be  possible  to use the Entropy Gathering Daemon (written in Perl!), available from\n<http://www.lothar.com/tech/crypto/>.\n\nSunOS 4.x\nIn SunOS 4.x you most probably want to use the SunOS ld, /usr/bin/ld, since the  more  recent\nversions  of  GNU ld (like 2.13) do not seem to work for building Perl anymore.  When linking\nthe extensions, the GNU ld gets very unhappy and spews a lot of errors like this\n\n... relocation truncated to fit: BASE13 ...\n\nand dies.  Therefore the SunOS 4.1 hints file explicitly sets the ld to be /usr/bin/ld.\n\nAs of Perl 5.8.1 the dynamic loading of libraries (DynaLoader, XSLoader) also seems  to  have\nbecome broken in in SunOS 4.x.  Therefore the default is to build Perl statically.\n\nRunning  the  test  suite  in SunOS 4.1 is a bit tricky since the dist/Tie-File/t/09genrs.t\ntest hangs (subtest #51, FWIW) for some unknown reason.  Just stop the  test  and  kill  that\nparticular Perl process.\n\nThere  are  various  other failures, that as of SunOS 4.1.4 and gcc 3.2.2 look a lot like gcc\nbugs.  Many of the failures happen in the Encode tests,  where  for  example  when  the  test\nexpects  \"0\"  you  get  \"&#48;\"  which  should after a little squinting look very odd indeed.\nAnother example is earlier in t/run/freshperl where chr(0xff) is expected but the test fails\nbecause the result is chr(0xff).  Exactly.\n\nThis is the \"make test\" result from the said combination:\n\nFailed 27 test scripts out of 745, 96.38% okay.\n\nRunning the \"harness\" is painful because of  the  many  failing  Unicode-related  tests  will\noutput megabytes of failure messages, but if one patiently waits, one gets these results:\n\nFailed Test                     Stat Wstat Total Fail  Failed  List of Failed\n-----------------------------------------------------------------------------\n...\n../ext/Encode/t/at-cn.t            4  1024    29    4  13.79%  14-17\n../ext/Encode/t/at-tw.t           10  2560    17   10  58.82%  2 4 6 8 10 12\n14-17\n../ext/Encode/t/encdata.t        29  7424    ??   ??       %  ??\n../ext/Encode/t/enceucjp.t       29  7424    ??   ??       %  ??\n../ext/Encode/t/encmodule.t      29  7424    ??   ??       %  ??\n../ext/Encode/t/encoding.t        29  7424    ??   ??       %  ??\n../ext/Encode/t/grow.t            12  3072    24   12  50.00%  2 4 6 8 10 12 14\n16 18 20 22 24\nFailed Test                     Stat Wstat Total Fail  Failed  List of Failed\n------------------------------------------------------------------------------\n../ext/Encode/t/guess.t          255 65280    29   40 137.93%  10-29\n../ext/Encode/t/jperl.t           29  7424    15   30 200.00%  1-15\n../ext/Encode/t/mime-header.t      2   512    10    2  20.00%  2-3\n../ext/Encode/t/perlio.t          22  5632    38   22  57.89%  1-4 9-16 19-20\n23-24 27-32\n../ext/List/Util/t/shuffle.t       0   139    ??   ??       %  ??\n../ext/PerlIO/t/encoding.t                    14    1   7.14%  11\n../ext/PerlIO/t/fallback.t                     9    2  22.22%  3 5\n../ext/Socket/t/socketpair.t       0     2    45   70 155.56%  11-45\n../lib/CPAN/t/vcmp.t                          30    1   3.33%  25\n../lib/Tie/File/t/09genrs.t      0    15    ??   ??       %  ??\n../lib/Unicode/Collate/t/test.t              199   30  15.08%  7 26-27 71-75\n81-88 95 101\n103-104 106 108-\n109 122 124 161\n169-172\n../lib/sort.t                      0   139   119   26  21.85%  107-119\nop/alarm.t                                     4    1  25.00%  4\nop/utfhash.t                                  97    1   1.03%  31\nrun/freshperl.t                              91    1   1.10%  32\nuni/tr7jis.t                                 ??   ??       %  ??\nuni/treucjp.t                    29  7424     6   12 200.00%  1-6\nuni/trsjis.t                     29  7424     6   12 200.00%  1-6\n56 tests and 467 subtests skipped.\nFailed 27/811 test scripts, 96.67% okay. 1383/75399 subtests failed,\n98.17% okay.\n\nThe alarm() test failure is caused by system() apparently blocking alarm().  That is probably\na  libc bug, and given that SunOS 4.x has been end-of-lifed years ago, don't hold your breath\nfor a fix.  In addition to that, don't try anything too Unicode-y,  especially  with  Encode,\nand you should be fine in SunOS 4.x.\n"
                }
            ]
        },
        "AUTHOR": {
            "content": "The  original  was written by Andy Dougherty doughera@lafayette.edu drawing heavily on advice\nfrom Alan Burlison, Nick Ing-Simmons, Tim Bunce, and many other Solaris users over the years.\n\nPlease report any errors, updates, or suggestions to <https://github.com/Perl/perl5/issues>.\n\nperl v5.38.2                                 2026-06-12                               PERLSOLARIS(1)",
            "subsections": []
        }
    },
    "summary": "perlsolaris - Perl version 5 on Solaris systems",
    "flags": [],
    "examples": [],
    "see_also": []
}