LFCOMPILE64(7)       Standards, Environments, and Macros      LFCOMPILE64(7)
NAME
       lfcompile64 - transitional compilation environment
DESCRIPTION
       All 64-bit applications can manipulate large files by default. The
       transitional interfaces described on this page can be used by 32-bit
       and 64-bit applications to manipulate large files.
       In the transitional compilation environment, explicit 64-bit
       functions, structures, and types are added to the  
API. Compiling in
       this environment allows both 32-bit and 64-bit applications to access
       files whose size is greater than or equal to 2 Gbyte ( 2^31 bytes).
       The transitional compilation environment exports all the explicit
       64-bit functions (
xxx64()) and types in addition to all the regular
       functions (
xxx()) and types. Both 
xxx() and 
xxx64() functions are
       available to the program source.  A 32-bit application must use the       
xxx64() functions in order to access large files. See the 
lf64(7)       manual page for a complete listing of the 64-bit transitional
       interfaces.
       The transitional compilation environment differs from the large file
       compilation environment, wherein the underlying interfaces are bound
       to 64-bit functions, structures, and types. An application compiled
       in the large file compilation environment is able to use the 
xxx()       source interfaces to access both large and small files, rather than
       having to explicitly utilize the transitional 
xxx64() interface calls
       to access large files. See the 
lfcompile(7) manual page for more
       information regarding the large file compilation environment.
       Applications may combine objects produced in the large file
       compilation environment with objects produced in the transitional
       compilation environment, but must be careful with respect to
       interoperability between those objects.  Applications should not
       declare global variables of types whose sizes change between
       compilation environments.
       For applications that do not wish to conform to the POSIX or X/Open
       specifications, the 64-bit transitional interfaces are available by
       default.  No compile-time flags need to be set.
   Access to Additional Large File Interfaces
       Applications that wish to access the transitional interfaces as well
       as the POSIX or X/Open specification-conforming interfaces should use
       the following compilation methods and set whichever feature test
       macros are appropriate to obtain the desired environment (see       
standards(7)).
           o      Set the compile-time flag 
_LARGEFILE64_SOURCE to 1 before
                  including any headers.
           o      Use the 
getconf(1) command with one or more of the
                  following arguments:
       +----------------+----------------------------+
       |   
argument     |          
purpose           |
       +----------------+----------------------------+
       |
LFS64_CFLAGS    | obtain compilation flags   |
       |                | necessary to enable the    |
       |                | transitional compilation   |
       |                | environment                |
       |
LFS64_LDFLAGS   | obtain link editor options |
       |
LFS64_LIBS      | obtain link library names  |
       |
LFS64_LINTFLAGS | obtain lint options        |
       +----------------+----------------------------+
EXAMPLES
       In the following examples, the transitional compilation environment
       is accessed by invoking the 
getconf utility with one of the arguments
       listed in the table above. The additional large file interfaces are
       accessed either by specifying 
-D_LARGEFILE64_SOURCE or by invoking
       the 
getconf utility with the arguments listed above.
       The example that uses the form of command substitution specifying the
       command within parentheses preceded by a dollar sign can be executed
       only in a POSIX-conforming shell such as the Korn Shell (see 
ksh(1)).
       In a shell that is not POSIX-conforming, such as the Bourne Shell
       (see 
sh(1)) and the C Shell (see 
csh(1)), the command must be
       enclosed within grave accent marks.
       Example 1: An example of compiling a program using transitional
       interfaces such as 
lseek64() and 
fopen64():
         $ c89 -D_LARGEFILE64_SOURCE        \
               $(getconf LFS64_CFLAGS) a.c  \
               $(getconf LFS64_LDFLAGS)     \
               $(getconf LFS64_LIBS)
       Example 2: An example of running lint on a program using transitional
       interfaces:
         % lint -D_LARGEFILE64_SOURCE        \
               `getconf LFS64_LINTFLAGS` ... \
               `getconf LFS64_LIBS`
SEE ALSO
       getconf(1), 
lseek(2), 
fopen(3C), 
lf64(7), 
standards(7)                              January 26, 1998                LFCOMPILE64(7)