|STANDARDS(7)||Standards, Environments, and Macros||STANDARDS(7)|
|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, POSIX.1c-1996, POSIX.2-1992, and POSIX.2a-1992 updates||Solaris 10|
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, 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.
|XPG3||superset of POSIX.1-1988 containing utilities from SVID3||SunOS 4.1|
|XPG4||superset of POSIX.1-1990, POSIX.2-1992, and POSIX.2a-1992 containing extensions to POSIX standards from XPG3||Solaris 2.4|
|SUS (XPG4v2)||superset of XPG4 containing historical BSD interfaces widely used by common application packages||Solaris 2.6|
|XNS4||sockets and XTI interfaces||Solaris 2.6|
|SUSv2||superset of SUS extended to support POSIX.1b-1993, POSIX.1c-1996, and ISO/IEC 9899 (C Standard) Amendment 1||Solaris 7|
|XNS5||superset and LP64-clean derivative of XNS4.||Solaris 7|
|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 Product 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 disagreement 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 Programming 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.
An application that wants to use standard-conforming utilities 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:
POSIX.2, POSIX.2a, SUS, SUSv2, XPG4
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 Standard||Feature Test Macros|
|POSIX.1-1990 and POSIX.2-1992 C-Language Bindings Option||_POSIX_SOURCE and _POSIX_C_SOURCE=2|
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 supports 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(7) 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 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 _________________________________________________________________________ 2011 ISO C c11 none gcc -stdc=c11 _________________________________________________________________________ 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 _________________________________________________________________________ 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
|November 26, 2017||OmniOS|