standards(5) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨페이지이름
검색(S)

standards(5)

Name
     standards, ANSI, C, C++, ISO, POSIX, POSIX.1, POSIX.2,  SUS,
     SUSv2, SUSv3, SVID, SVID3, XNS, XNS4, XNS5, XPG, XPG3, XPG4,
     XPG4v2 - standards and specifications  supported  by  Oracle
     Solaris

Description
     Oracle Solaris supports IEEE Std 1003.1 and IEEE Std 1003.2,
     commonly  known  as  POSIX.1  and POSIX.2, respectively. The
     following table lists each version of these standards with a
     brief  description  and  the  SunOS  or Solaris release that
     first conformed to it.



     tab();  cw(1.25i)  cw(3.3i)  cw(.95i)   lw(1.25i)   lw(3.3i)
     lw(.95i)   POSIX   StandardDescriptionRelease   _   POSIX.1-
     1988system  interfaces  and  headersSunOS  4.1  _   POSIX.1-
     1990POSIX.1-1988  updateSolaris  2.0 _ POSIX.1b-1993realtime
     extensionsSolaris      2.4      _       POSIX.1c-1996threads
     extensionsSolaris     2.6     _     POSIX.2-1992shell    and
     utilitiesSolaris 2.5 _  POSIX.2a-1992interactive  shell  and
     utilitiesSolaris    2.5   _   POSIX.1-2001T{   POSIX.1-1990,
     POSIX.1b-1993, POSIX.1c-1996,  POSIX.2-1992,  and  POSIX.2a-
     1992   updates   T}Solaris   10  _  POSIX.1-2004POSIX.1-2001
     updateOracle Solaris 11



     Oracle Solaris also  supports the X/Open Common Applications
     Environment (CAE) Portability Guide Issue 3 (XPG3) and Issue
     4 (XPG4); Single UNIX  Specification  (SUS,  also  known  as
     XPG4v2);  Single  UNIX Specification, Version 2 (SUSv2); and
     Single UNIX Specification, Version 3 (SUSv3). Both XPG4  and
     SUS  include  Networking  Services  Issue  4  (XNS4).  SUSv2
     includes Networking Services Issue 5 (XNS5).


     The following table lists each X/Open specification  with  a
     brief  description  and  the  SunOS  or Solaris release that
     first conformed to it.



     tab();  cw(1.29i)  cw(3.27i)  cw(.93i)  cw(1.29i)  cw(3.27i)
     cw(.93i) X/Open CAE _
      SpecificationDescriptionRelease  _   XPG3T{   superset   of
     POSIX.1-1988  containing  utilities from SVID3 T}SunOS 4.1 _
     XPG4T{   superset   of   POSIX.1-1990,   POSIX.2-1992,   and
     POSIX.2a-1992  containing extensions to POSIX standards from
     XPG3 T}Solaris 2.4 _ SUS (XPG4v2)T{ superset  of  XPG4  con-
     taining  historical  BSD  interfaces  widely  used by common
     application packages T}Solaris 2.6  _  XNS4sockets  and  XTI
     interfacesSolaris  2.6 _ SUSv2T{ superset of SUS extended to
     support POSIX.1b-1993, POSIX.1c-1996, and  ISO/IEC  9899  (C
     Standard)  Amendment  1  T}Solaris  7  _ XNS5T{ superset and
     LP64-clean derivative of XNS4.  T}Solaris 7 _  SUSv3same  as
     POSIX.1-2001Solaris 10



     The XNS4 specification is safe for use only  in  ILP32  (32-
     bit)  environments  and should not be used for LP64 (64-bit)
     application environments. Use  XNS5  or  SUSv3,  which  have
     LP64-clean  interfaces  that  are  portable across ILP32 and
     LP64 environments. Solaris releases 7 through Oracle Solaris
     11 support both the ILP32 and LP64 environments.


     Solaris releases 7 through 10 have been branded  to  conform
     to  The  Open  Group's  UNIX 98 Product Standard. Solaris 10
     through Oracle Solaris 11 have been branded  to  conform  to
     The Open Group's UNIX 03 Product Standard.


     Solaris releases 2.0 through Oracle Solaris 11  support  the
     interfaces  specified  by the System V Interface Definition,
     Third Edition, Volumes 1 through 4 (SVID3).  Note,  however,
     that  since  the developers of this specification (UNIX Sys-
     tems Laboratories) are no longer in business and since  this
     specification defers to POSIX and X/Open CAE specifications,
     there is some disagreement about what is currently  required
     for conformance to this specification.


     When Oracle Solaris Studio 12.4  C  Compiler  is  installed,
     Oracle  Solaris 11 supports the ANSI X3.159-1989 Programming
     Language - C and ISO/IEC 9899:1990 Programming Language -  C
     (C) interfaces.


     When Oracle Solaris Studio 12.4  C  Compiler  is  installed,
     Oracle  Solaris  11  supports  ISO/IEC  9899:1990  Amendment
     1:1995: C Integrity.


     When Oracle Solaris Studio 12.4  C  Compiler  is  installed,
     Oracle  Solaris  11  supports  ISO/IEC 9899:1999 Programming
     Languages - C.


     When Oracle Solaris Studio 12.4 C++ Compiler  is  installed,
     Oracle   Solaris  Studio  12.4  C++  5.14  supports  ISO/IEC
     14882:1998 Programming Languages - C++. Unsupported features
     of that standard are described in the compiler README file.

  Utilities
     If the behavior required by POSIX.2, POSIX.2a, XPG4, SUS, or
     SUSv2  conflicts  with  historical Solaris utility behavior,
     the original Solaris version of the utility is unchanged;  a
     new version that is standard-conforming has been provided in
     /usr/xpg4/bin. If the behavior required by  POSIX.1-2001  or
     SUSv3  conflicts with historical Solaris utility behavior, a
     new version that is standard-conforming has been provided in
     /usr/xpg4/bin  or in /usr/xpg6/bin. If the behavior required
     by POSIX.1-2001 or SUSv3 conflicts with  POSIX.2,  POSIX.2a,
     SUS,  or  SUSv2,  a  new  version  that  is  SUSv3 standard-
     conforming has been provided in /usr/xpg6/bin.


     An application that wants to use standard-conforming  utili-
     ties  must  set  the PATH (sh(1) or ksh(1)) or path (csh(1))
     environment variable to specify the directories listed below
     in the order specified to get the appropriate utilities:

     SVID3, XPG3

             1.   /usr/bin

             2.   directory containing binaries for your compiler

             3.   other directories containing binaries needed by
                  the application


     POSIX.2, POSIX.2a, SUS, SUSv2, XPG4

             1.   /usr/xpg4/bin

             2.   /usr/bin

             3.   directory containing binaries for your compiler

             4.   other directories containing binaries needed by
                  the application


     POSIX.1-2001, SUSv3

             1.   /usr/xpg6/bin

             2.   /usr/xpg4/bin

             3.   /usr/bin
             4.   directory containing binaries for your compiler

             5.   other directories containing binaries needed by
                  the application



     When an application uses execlp() or execvp() (see  exec(2))
     to  execute a shell file, or uses system(3C), the shell used
     to interpret the shell file depends on the standard to which
     the caller conforms:



     tab(); cw(4.33i) cw(1.17i) lw(4.33i) lw(1.17i) StandardShell
     Used  _  T{  1989  ANSI  C,  1990 ISO C, 1999 ISO C, POSIX.1
     (1990-2001), SUS, SUSv2, SUSv3, XPG4  T}/usr/xpg4/bin/sh  T{
     POSIX.1   (1988),   SVID3,   XPG3,   no  standard  specified
     T}/usr/bin/sh


  Feature Test Macros
     Feature test macros are used  by  applications  to  indicate
     additional  sets  of  features that are desired beyond those
     specified by the C standard. If  an  application  uses  only
     those  interfaces  and headers defined by a particular stan-
     dard (such as POSIX or  X/Open  CAE),   then  it  need  only
     define  the appropriate feature test macro specified by that
     standard. If the application is using interfaces and headers
     not  defined  by that standard, then in addition to defining
     the appropriate standard feature test macro,  it  must  also
     define  __EXTENSIONS__. Defining __EXTENSIONS__ provides the
     application with access to all interfaces and headers not in
     conflict  with  the specified standard. The application must
     define __EXTENSIONS__ either on the compile command line  or
     within the application source files.

  1989 ANSI C, 1990 ISO C, 1999 ISO C
     No feature test macros need to be defined to  indicate  that
     an application is a conforming C application.

  ANSI/ISO C++
     ANSI/ISO C++ does not define any feature test macros. If the
     standard  C++  announcement macro __cplusplus, predefined by
     the compiler based on  compiler  defaults  and  command-line
     options,  is  set  to a value of 199711 or greater, the com-
     piler operates in a standard-conforming mode, indicating C++
     standards  conformance.  The  value 199711 indicates confor-
     mance to ISO/IEC 14882:1998, as required by  that  standard.
     (As noted above, conformance to the standard is incomplete.)

     C++ bindings are not defined for POSIX  or  X/Open  CAE,  so
     specifying   feature  test  macros  such  as  _POSIX_SOURCE,
     _POSIX_C_SOURCE, and _XOPEN_SOURCE can result in compilation
     errors  due  to conflicting requirements of standard C++ and
     those specifications.

  POSIX
     Applications that are  intended  to  be  conforming  POSIX.1
     applications  must  define the feature test macros specified
     by the standard before including any headers.  For the stan-
     dards  listed  below,  applications  must define the feature
     test macros listed.   Application  writers  must  check  the
     corresponding standards for other macros that can be queried
     to determine if desired options are supported by the  imple-
     mentation.



     tab();  cw(2.75i)  cw(2.75i)   lw(2.75i)   lw(2.75i)   POSIX
     StandardFeature Test Macros _ POSIX.1-1990_POSIX_SOURCE _ T{
     POSIX.1-1990 and POSIX.2-1992   C-Language  Bindings  Option
     T}_POSIX_SOURCE      and     _POSIX_C_SOURCE=2     POSIX.1b-
     1993_POSIX_C_SOURCE=199309L           _            POSIX.1c-
     1996_POSIX_C_SOURCE=199506L            _            POSIX.1-
     2001_POSIX_C_SOURCE=200112L


  SVID3
     The SVID3 specification does not specify  any  feature  test
     macros  to  indicate  that an application is written to meet
     SVID3 requirements.  The  SVID3  specification  was  written
     before the C standard was completed.

  X/Open CAE
     To build or compile an application that conforms to  one  of
     the X/Open CAE specifications, use the following guidelines.
     Applications need not set the POSIX feature test  macros  if
     they require both CAE and POSIX functionality.

     XPG3
                     The application must  define  _XOPEN_SOURCE.
                     If  _XOPEN_SOURCE  is  defined with a value,
                     the value must be less than 500.


     XPG4
                     The application  must  define  _XOPEN_SOURCE
                     and  set  _XOPEN_VERSION=4. If _XOPEN_SOURCE
                     is defined with a value, the value  must  be
                     less than 500.


     SUS (XPG4v2)
                     The application  must  define  _XOPEN_SOURCE
                     and    set    _XOPEN_SOURCE_EXTENDED=1.   If
                     _XOPEN_SOURCE is defined with a  value,  the
                     value must be less than 500.


     SUSv2
                     The      application       must       define
                     _XOPEN_SOURCE=500.


     SUSv3
                     The      application       must       define
                     _XOPEN_SOURCE=600.


  Compilation
     The Oracle Solaris  Studio  12.4  C  Compiler  provides  the
     ISO/IEC 99899:1999 (1999 ISO C Language) standard-conforming
     compilation system and the c99 utility.


     When   ld   is   used   directly   to   link   applications,
     /usr/lib/values-xpg4.o  must  be  specified on any link/load
     command line, unless the  application  is  POSIX.1-2001-  or
     SUSv3-conforming,  in which case /usr/lib/values-xpg6.o must
     be specified on any link/load compile line. When cc or CC is
     used  to  link applications, the compiler automatically adds
     the appropriate file. The preferred way  to  build  applica-
     tions, however, is described in the table below.


     An XNS4- or XNS5-conforming application must include -l  XNS
     on  any  link/load  command line in addition to defining the
     feature test macros specified  for  SUS  or  SUSv2,  respec-
     tively.


     If the compiler supports the redefine_extname pragma feature
     (the  Oracle  Solaris  Studio 12.4 C Compiler and the Oracle
     Solaris  Studio  12.4  C++   Compiler   define   the   macro
     __PRAGMA_REDEFINE_EXTNAME to indicate that they support this
     feature),   then   the   standard   headers   use    #pragma
     redefine_extname  directives  to properly map function names
     onto library entry point names. This mapping  provides  full
     support for ISO C, POSIX, and X/Open namespace reservations.


     If this pragma feature is not supported by the compiler, the
     headers  use  the #define directive to map internal function
     names onto appropriate library entry point  names.  In  this
     instance,  applications  should avoid using the explicit 64-
     bit file offset symbols listed on the lf64(5)  manual  page,
     since these names are used by the implementation to name the
     alternative entry points.

     When using the Oracle Solaris Studio 12.4 C Compiler, appli-
     cations conforming to the specifications listed above should
     be compiled using the utilities and flags indicated  in  the
     following table:

       Specification            Compiler/Flags         Feature Test Macros
       _________________________________________________________________________
       1989 ANSI C and 1990 ISO C    c89                none
       _________________________________________________________________________
       1999 ISO C                    c99             none
       _________________________________________________________________________
       SVID3                         cc -Xt -xc99=none  none
       _________________________________________________________________________
       POSIX.1-1990                  c89                _POSIX_SOURCE
       _________________________________________________________________________
       POSIX.1-1990 and POSIX.2-1992 c89                _POSIX_SOURCE  and
         C-Language Bindings Option                     POSIX_C_SOURCE=2
       _________________________________________________________________________
       POSIX.1b-1993                 c89                _POSIX_C_SOURCE=199309L
       _________________________________________________________________________
       POSIX.1c-1996                 c89                _POSIX_C_SOURCE=199506L
       _________________________________________________________________________
       POSIX.1-2001                  c99                _POSIX_C_SOURCE=200112L
       _________________________________________________________________________
       POSIX.1c-1996                 c89                _POSIX_C_SOURCE=199506L
       _________________________________________________________________________
       CAE XPG3                      cc -Xa -xc99=none  _XOPEN_SOURCE
       _________________________________________________________________________
       CAE XPG4                      c89            _XOPEN_SOURCE and
                                          _XOPEN_VERSION=4
       _________________________________________________________________________
       SUS (CAE XPG4v2)              c89                _XOPEN_SOURCE and
         (includes XNS4)                                _XOPEN_SOURCE_EXTENDED=1
       _________________________________________________________________________
       SUSv2 (includes XNS5)         c89                _XOPEN_SOURCE=500
       _________________________________________________________________________
       SUSv3                         c99          _XOPEN_SOURCE=600




     For  platforms  supporting  the  LP64  (64-bit)  programming
     environment,  SUSv2-conforming  LP64 applications using XNS5
     library calls should be built  with  command  lines  of  the
     form:

       c89 $(getconf XBS5_LP64_OFF64_CFLAGS) -D_XOPEN_SOURCE=500 \
           $(getconf XBS5_LP64_OFF64_LDFLAGS) foo.c -o foo \
           $(getconf XBS5_LP64_OFF64_LIBS) -lxnet

     Similar SUSv3-conforming LP64 applications should  be  built
     with command lines of the form:

       c99 $(getconf POSIX_V6_LP64_OFF64_CFLAGS) -D_XOPEN_SOURCE=600 \
           $(getconf POSIX_V6_LP64_OFF64_LDFLAGS) foo.c -o foo \
           $(getconf POSIX_V6_LP64_OFF64_LIBS) -lxnet


  SUSv3
     c99
                                 _XOPEN_SOURCE=600

See Also
     csh(1), ksh(1),  sh(1),  exec(2),  sysconf(3C),  system(3C),
     environ(5), lf64(5)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3