lipo
LIPO(1) General Commands Manual LIPO(1)
NAME
lipo - create or operate on universal files
SYNOPSIS
lipo input_file command [option...]
DESCRIPTION
The lipo tool creates or operates on ``universal'' (multi-architecture)
files. Generally, lipo reads a single input file and writes to a single
output file, although some commands and options accept multiple input
files. lipo will only ever write to a single output file, and input
files are never modified in place.
lipo supports a number of commands for creating universal files from
single-architecture files, extracting single-architecture files from
universal files, and displaying architecture information. lipo can only
perform one such command at a time, although some command flags may
appear more than once. Some commands support additional options that can
be used with that command. In addition, there are global options that are
supported by multiple commands.
The arch_type arguments may be any of the supported architecture names
listed in the man page arch(3).
COMMANDS
-archs Display only the architecture names present in a single input
file. Each architecture name is a single word, making this option
suitable for shell scripting. Unknown architectures will be
represented by "unknown" along with the numeric CPU type and CPU
subtype values as a single word.
-create
Create one universal output file from one or more input files.
When input files specified on the command-line, all of the
architectures in each file will be copied into the output file,
whereas when input files are included using the global -arch
option, only the specified architecture will be copied from that
input file. This command requires the -output option.
-detailed_info
Display a detailed list of the architecture types in the input
universal file (all the the information in the universal header,
for each architecture in the file).
-extract arch_type [-extract arch_type...]
Take one universal input file and copy the arch_type from that
universal file into a universal output file containing only that
architecture. This command requires the -output option.
-extract_family arch_type [-extract_family arch_type...]
Take one universal input file and copy all of the arch_types for
the family that arch_type is in from that universal file into an
output file containing only those architectures. The file will be
thin if only one architecture is found or universal otherwise.
This command requires the -output option.
-info Display a brief description of each input file along with the
names of each architecture type in that input file.
-remove arch_type [-remove arch_type ...]
Take one universal input file and remove the arch_type from that
universal file, placing the result in the output file. This
command requires the -output option.
-replace arch_type file_name [-replace arch_type file_name...]
Take one universal input file; in the output file, replace the
arch_type contents of the input file with the contents of the
specified file_name. This command requires the -output option.
-thin arch_type
Take one input file and create a thin output file with the
specified arch_type. This command requires the -output option.
-verify_arch arch_type ...
Take one input file and verify the specified arch_types are
present in the file. If so then exit with a status of 0 else exit
with a status of 1. Because more than one arch_type can be
verified at once, all of the input files must appear before the
-verify_arch flag on the command-line.
OPTIONS
-arch arch_type input_file
Tells lipo that input_file contains the specified architecture
type. The -arch arch_type specification is unnecessary if
input_file is an object file, a universal file, or some other file
whose architecture(s) lipo can figure out.
-hideARM64
When creating a universal binary including both 32-bit and 64-bit
ARM files, this option will ask lipo to add the 64-bit files at
the end and not include them in the count of architectures present
in the file. The files must be executable files (Mach-O filetype
MH_EXECUTE). This option has no effect if neither 32-bit ARM nor
64-bit ARM files are present, and no other files may be hidden in
this way. This option only works with the -create, -remove, and
-replace, commands, and is only intended for tools and workflows
testing a workaround on older systems.
-output output_file
Commands that create new files write to the output file specified
by the -output flag. This option is required for the -create,
-extract, -extract_family, -remove, -replace, and -thin commands.
-segalign arch_type value
Set the segment alignment of the specified arch_type when creating
a universal file containing that architecture. value is a
hexadecimal number that must be an integral power of 2. This is
only needed when lipo can't figure out the alignment of an input
file (currently not an object file), or when it guesses at the
alignment too conservatively. The default for files unknown to
lipo is 0 (2^0, or an alignment of one byte), and the default
alignment for archives is 4 (2^2, or 4-byte alignment).
SEE ALSO
arch(3)
Apple Computer, Inc. August 31, 2018 LIPO(1)