DirectNET

Data Center Management Solutions including UPS Systems, Data Center Cooling, KVM over IP & IP Power Strips, Server Racks and Server Rack accessories; KVM Switches and KVM Extenders; Rackmount Monitors and Rackmount Keyboards.


NAVIGATION
Home
Store
INSIDE MAC
Television Shows
Broadcast Shows
Daily News Shows
Special Shows
EVENTS
DAILY TIPS
Design
Mac OS X
Mac OS X UNIX
COMMUNITY
Forums
Surveys
NEWS
Current
Press
Archive
FEATURES
Editorial
Dr. Mac
Reviews
Reader Reports
RESOURCES
FAQ
Documentation
Learning Center
MAN pages
Glossary
Tutorials
Tips
Links

OUR PARTNERS


       libtool - create libraries
       ranlib  -  add  or update the table of contents of archive
       libraries


SYNOPSIS

       libtool -static -o output [ -sacLT ] [ -  ]  [  -arch_only
       arch_type ] file...  [-filelist listfile[,dirname]]

       libtool  -dynamic -o output [ -install_name name ] [ -com-
       patibility_version number ] [ -current_version number ]  [
       link  editor  flags  ]  [  -v  ]  [  -noall_load ] [ - ] [
       -arch_only   arch_type   ]   file...    [-filelist   list-
       file[,dirname]]

       ranlib [ -sact ] [ - ] archive...


DESCRIPTION

       The libtool command takes the specified input object files
       and creates a library for use with the link editor, ld(1).
       The library's name is specified by output (the argument to
       the -o flag).  The input object files may be in  any  cor-
       rect  format  that  contains  object files (``fat'' files,
       archives, object files).  Libtool will not  put  any  non-
       object  input file into the output library (unlike ranlib,
       which allows this in the archives it operates on).

       When producing a ``fat'' file from objects of the same CPU
       type and differing CPU subtypes, libtool and ranlib create
       at most one library for each CPU type, rather than a sepa-
       rate library in a fat file for each of the unique pairings
       of CPU type and CPU subtype.  Thus, the resulting CPU sub-
       type for each library is the _ALL CPU subtype for that CPU
       type.  This strategy strongly encourages  the  implementor
       of  a  library  to create one library that chooses optimum
       code to run at run time, rather than at link time.

       Libtool  can  create  either  dynamically  linked   shared
       libraries,  with  -dynamic, or statically linked (archive)
       libraries, with -static.


DYNAMICALLY LINKED SHARED LIBRARIES

       Dynamically linked  libraries,  unlike  statically  linked
       libraries,  are  Mach-O  format files and not ar(5) format
       files.  Dynamically linked  libraries  have  two  restric-
       tions:  No  symbol  may be defined in more than one object
       file and no common symbol can be used.  To maximize  shar-
       ing  of  a  dynamically  linked shared library the objects
       should be compiled with the -dynamic flag of cc(1) to pro-
       duce  indirect  undefined references and position-indepen-
       dent  code.   To  build  a  dynamically  linked   library,
       libtool, runs the link editor, ld(1), with -dylib once for
       each architecutre present in the input  objects  and  then
       Libtool with -static is intended to replace ar(5) and ran-
       lib.  For backward compatibility, ranlib is  still  avail-
       able,  and  it supports fat files.  Ranlib adds or updates
       the table of contents to each archive so it can be  linked
       by  the  link  editor, ld(1).  The table of contents is an
       archive member at the beginning of the archive that  indi-
       cates  which symbols are defined in which library members.
       Because ranlib rewrites the archive, sufficient  temporary
       file  space must be available in the file system that con-
       tains the current directory.   Ranlib  takes  all  correct
       forms  of  libraries  (fat  files containing archives, and
       simple archives) and updates the table of contents for all
       archives in the file.  Ranlib also takes one common incor-
       rect form of archive, an archive  whose  members  are  fat
       object files, adding or updating the table of contents and
       producing the library in correct form (a fat file contain-
       ing multiple archives).

       The  archive  member  name  for a table of contents begins
       with ``__.SYMDEF''.  Currently, there  are  two  types  of
       table  of  contents produced by libtool -static and ranlib
       and understood by  the  link  editor,  ld(1).   These  are
       explained below, under the -s and -a options.


OPTIONS

       The following options pertain to libtool only.

       -static
              Produce  a statically linked (archive) library from
              the input files.  This is the default.

       -dynamic
              Produce a dynamically linked  shared  library  from
              the input files.

       -install_name name
              ror  a  dynamic  shared  library this specifies the
              file name the library will be installed in for pro-
              grams  that  use  it.  If this is not specified the
              name specified by the  -o  output  option  will  be
              used.

       -compatibility_version number
              For  a  dynamic  shared  library this specifies the
              compatibility version number of the library.   When
              a  library  is  used  the  compatibility version is
              checked and if the user's version is  greater  that
              the  library's version, an error message is printed
              and the using program exits.  The format of  number
              is  X[.Y[.Z]]  where  X must be a positive non-zero
              number less than or equal to 65535, and .Y  and  .Z
              are  optional  and if present must be positive non-
              checking is done when the library is used.

       -current_version number
              For dynamic shared library files this specifies the
              current version number of the library.  The program
              using the library can obtain the current version of
              the  library  programmatically to determine exactly
              which version of the library it is using.  The for-
              mat  of number is X[.Y[.Z]] where X must be a posi-
              tive non-zero number less than or equal  to  65535,
              and  .Y  and .Z are optional and if present must be
              positive non-zero numbers less  than  or  equal  to
              255.   If this is not specified then it has a value
              of 0.

       -noall_load
              For dynamic shared library files this specifies the
              the  default  behavior  of  loading  all members of
              archives on the command line is  not  to  be  done.
              This  option  is  used  by the GNU compiler driver,
              cc(1), when  used  with  it's  -dynamiclib  option.
              This  is  done  to  allow  selective loading of the
              GNU's   compiler's   runtime    support    library,
              libcc_dyanmic.a .

       link editor flags
              For  a  dynamic  shared library the following ld(1)
              flags are accepted and passed through: -lx,  -Ldir,
              -ysym,  -initsym, -idefinition:indirect, -seg1addr,
              -segs_read_only_addr,        -segs_read_write_addr,
              -seg_addr_table,  -segprot, -segalign, -sectcreate,
              -sectorder, -sectorder_detail,  -sectalign,  -unde-
              fined,   -read_only_relocs,  -prebind,  -noprebind,
              -framework,      -umbrella,      -allowable_client,
              -sub_umbrella,  -F, -U, -Y, -Sn, -Si, -S, -X, -why-
              load, -all_load.  -arch_errors_fatal,  -dylib_file,
              -run_init_lazily, -final_output.  See the ld(1) man
              page  for  details  on  these  flags.    The   flag
              -image_base is a synonym for -seg1addr.

       -v     Verbose  mode,  which prints the ld(1) commands and
              lipo(1) commands executed.

       -filelist listfile[,dirname]
              The listfile contains a list of file names  and  is
              an alternative way of specifiying file names on the
              command line.   The file names are listed  one  per
              line  separated  only  by newlines (spaces and tabs
              are assumed to be part of the file name).   If  the
              optional  directory name, dirname is specified then
              it is prepended to each name in the list file.

              This option causes libtool to build a library  only
              for  the  specified arch_type and ignores all other
              architectures in the input files.

       The following options pertain to the table of contents for
       an  archive library, and apply to both libtool -static and
       ranlib:

       -s     Produce the preferred type of  table  of  contents,
              which  results  in faster link editing when linking
              with the archive.  The order of the table  of  con-
              tents is sorted by symbol name.  The library member
              name  of  this  type  of  table  of   contents   is
              ``__.SYMDEF  SORTED''.   This type of table of con-
              tents can only be produced when  the  library  does
              not have multiple members that define the same sym-
              bol.  This is the default.

       -a     Produce the original type  of  table  of  contents,
              whose order is based on the order of the members in
              the archive.  The library member name of this  type
              of  table  of contents is ``__.SYMDEF''.  This type
              of table of contents must be used when the  library
              has multiple members that define the same symbol.

       -c     Include  common symbols as definitions with respect
              to the table  of  contents.   This  is  seldom  the
              intended behavior for linking from a library, as it
              forces the linking of a library member just because
              it  uses  an uninitialized global that is undefined
              at that point  in  the  linking.   This  option  is
              included  only because this was the original behav-
              ior of ranlib.  This option is not the default.

       -L     Use the 4.4bsd archive extended  format  #1,  which
              allows  archive  member  names to be longer than 16
              characters and have spaces in  their  names.   This
              option is the default.

       -T     Truncate  archive member names to 16 characters and
              don't use the  4.4bsd  extended  format  #1.   This
              option is not the default.

       For compatibility, the following ranlib option is accepted
       (but ignored):

       -t     This  option  used  to  request  that  ranlib  only
              ``touch''  the  archives instead of modifying them.
              The option is now ignored, and the  table  of  con-
              tents is rebuilt.

       One other option applies to both libtool and ranlib:
              archives) and not as options.


SEE ALSO

       ld(1), ar(1), otool(1), make(1), redo_prebinding(1), ar(5)


BUGS

       The  way libraries use to be created, errors were possible
       if the library was modified with ar(1) and  the  table  of
       contents was not updated by rerunning ranlib(1).  Thus the
       link editor, ld, warns when the  modification  date  of  a
       library is more recent than the creation date of its table
       of contents.  Unfortunately, this means that you  get  the
       warning even if you only copy the library.

Copyright © 2000-2009 Inside Mac Media, Inc. All rights reserved.
Apple assumes no responsibility with regard to the selection, performance, or use of the products or services. All understandings, agreements, or warranties, if any, take place directly between the vendors and prospective users.
Apple, the Apple logo, Mac, PowerMac G4, PowerMac G5, Xserve, Xserve RAID, PowerBook, iBook, Airport, AirPort Extreme, iMac, eMac, iLife, iMovie, iCal, iPhoto, iTunes, QuickTime, FireWire, iPod, iSight, AppleWorks, Macintosh, Jaguar, Panther, Mac OS, Mac OS X and Mac OS X Server are trademarks of Apple Computer, Inc.