Unix/Linux Go Back    


OpenSolaris 2009.06 - man page for standards (opensolaris section 5)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


standards(5)		       Standards, Environments, and Macros		     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
       Solaris

DESCRIPTION
       Solaris	10  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.

       POSIX Standard		   Description		      Release
       -----------------------------------------------------------------
       POSIX.1-1988	system interfaces and headers	    SunOS 4.1
       -----------------------------------------------------------------
       POSIX.1-1990	POSIX.1-1988 update		    Solaris 2.0
       -----------------------------------------------------------------
       POSIX.1b-1993	realtime extensions		    Solaris 2.4
       -----------------------------------------------------------------
       POSIX.1c-1996	threads extensions		    Solaris 2.6
       -----------------------------------------------------------------
       POSIX.2-1992	shell and utilities		    Solaris 2.5
       -----------------------------------------------------------------
       POSIX.2a-1992	interactive shell and utilities     Solaris 2.5
       -----------------------------------------------------------------
       POSIX.1-2001	POSIX.1-1990,	   POSIX.1b-1993,   Solaris 10
			POSIX.1c-1996, POSIX.2-1992,  and
			POSIX.2a-1992 updates

       Solaris	10  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, Ver-
       sion 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.

	 X/Open CAE
       -----------------------------------------------------------------
	Specification		   Description		      Release
       -----------------------------------------------------------------
	    XPG3	superset of POSIX.1-1988 contain-    SunOS 4.1
			ing utilities from SVID3
       -----------------------------------------------------------------
	    XPG4	superset     of     POSIX.1-1990,   Solaris 2.4
			POSIX.2-1992,  and  POSIX.2a-1992
			containing  extensions	to  POSIX
			standards from XPG3
       -----------------------------------------------------------------

	SUS (XPG4v2)	superset of XPG4 containing  his-   Solaris 2.6
			torical   BSD  interfaces  widely
			used by common application  pack-
			ages
       -----------------------------------------------------------------
	    XNS4	   sockets and XTI interfaces	    Solaris 2.6
       -----------------------------------------------------------------
	   SUSv2	superset  of SUS extended to sup-    Solaris 7
			port		   POSIX.1b-1993,
			POSIX.1c-1996,	and  ISO/IEC 9899
			(C Standard) Amendment 1
       -----------------------------------------------------------------
	    XNS5	superset and  LP64-clean  deriva-    Solaris 7
			tive of XNS4.
       -----------------------------------------------------------------
	   SUSv3	      same as POSIX.1-2001	    Solaris 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 10 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 has been branded to conform to The Open Group's UNIX 03 Prod-
       uct Standard.

       Solaris releases 2.0 through 10 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 Systems Laboratories) are no longer in business and
       since this specification defers to POSIX and X/Open CAE specifications, there is some dis-
       agreement about what is currently required for conformance to this specification.

       When Sun Studio C Compiler 5.6 is installed, Solaris releases 2.0 through 10  support  the
       ANSI  X3.159-1989  Programming Language - C and ISO/IEC 9899:1990 Programming Language - C
       (C) interfaces.

       When Sun Studio C Compiler 5.6 is installed, Solaris releases 7 through 10 support ISO/IEC
       9899:1990 Amendment 1:1995: C Integrity.

       When  Sun  Studio  C Compiler 5.6 is installed, Solaris 10 supports ISO/IEC 9899:1999 Pro-
       gramming Languages - C.

       When Sun Studio C++ Compiler 5.6 is installed, Solaris releases 2.5.1 through  10  support
       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 histori-
       cal  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  behav-
       ior  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 utilitues 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/ccs/bin

	       2.     /usr/bin

	       3.     directory containing binaries for your compiler

	       4.     other directories containing binaries needed by the application

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

	       1.     /usr/xpg4/bin

	       2.     /usr/ccs/bin

	       3.     /usr/bin

	       4.     directory containing binaries for your compiler

	       5.     other directories containing binaries needed by the application

       POSIX.1-2001, SUSv3

	       1.     /usr/xpg6/bin

	       2.     /usr/xpg4/bin

	       3.     /usr/ccs/bin

	       4.     /usr/bin

	       5.     directory containing binaries for your compiler

	       6.     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:

			Standard			Shell Used
       ---------------------------------------------------------------
       1989  ANSI  C,  1990  ISO  C,  1999  ISO C,   /usr/xpg4/bin/sh
       POSIX.1	(1990-2001),  SUS,  SUSv2,  SUSv3,
       XPG4
       POSIX.1(1988),  SVID3,  XPG3, no standard   /usr/bin/sh
       specified

   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 standard (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 inter-
       faces 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 is predefined to value 199711 or greater, the	compiler  operates  in	a
       standard-conforming mode, indicating C++ standards conformance. The value 199711 indicates
       conformance to ISO/IEC 14882:1998, as required by that standard.  (As noted above, confor-
       mance  to  the  standard is incomplete.)  A standard-conforming mode is not available with
       compilers prior to Sun WorkShop C++ 5.0.

       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  fea-
       ture  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 implementation.

	     POSIX Standard		     Feature Test Macros
       ------------------------------------------------------------------
       POSIX.1-1990		     _POSIX_SOURCE
       ------------------------------------------------------------------
       POSIX.1-1990	       and   _POSIX_SOURCE and _POSIX_C_SOURCE=2
       POSIX.2-1992	C-Language
       Bindings Option
       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
       A POSIX.1 (1988-1996)-, XPG4-, SUS-, or SUSv2-conforming implementation	must  include  an
       ANSI  X3.159-1989  (ANSI C Language) standard-conforming compilation system and the cc and
       c89 utilities. A POSIX.1-2001- or SUSv3-conforming implementation must include an  ISO/IEC
       99899:1999  (1999 ISO C Language) standard-conforming compilation system and the c99 util-
       ity. Solaris 10 was tested with the cc, c89, and c99 utilities and the  compilation  envi-
       ronment provided by Sun Studio C Compiler 5.6.

       When  cc  is  used  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. The
       preferred way to build applications, 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, respectively.

       If  the	compiler suppports the redefine_extname pragma feature (the Sun Studio C Compiler
       5.6 compilers define the macro __PRAGMA_REDEFINE_EXTNAME to indicate that it supports 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 Sun Studio C Compiler 5.6 compilers, applications conforming to the specifica-
       tions listed above should be compiled using the utilities and flags indicated in the  fol-
       lowing 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)

SunOS 5.11				   14 Jan 2004				     standards(5)
Unix & Linux Commands & Man Pages : ©2000 - 2017 Unix and Linux Forums


All times are GMT -4. The time now is 11:36 AM.