lfcompile64(5)




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. Com-
     piling 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(5) 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(5) 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 transi-
     tional compilation environment, but  must  be  careful  with
     respect  to interoperability between those objects. Applica-
     tions 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(5)).
        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  addi-
     tional large file interfaces are accessed either by specify-
     ing -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 dol-
     lar 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  transi-
     tional  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(5), standards(5)


Man(1) output converted with man2html