LLVM-LIPO(1)

πŸ’… LLVM-LIPO(1) β€” bestie's guide to universal binaries ✨

okay so hi, welcome to the llvm-lipo page, section 1 of the LLVM manual πŸ’–

🌈 NAME

llvm-lipo β€” the LLVM tool for manipulating universal binaries, and yes she's iconic for it πŸ‘‘


πŸ¦‹ SYNOPSIS

llvm-lipo [filenames...] [options]

✨ DESCRIPTION

so basically llvm-lipo does three (3) main character things πŸ’…

  • she can create universal binaries out of Mach-O files
  • she can extract regular object files out of universal binaries
  • she can display architecture information about both universal files and regular files

no cap, that's the whole vibe 🫢


πŸŽ€ COMMANDS

llvm-lipo supports these commands, and heads up bestie: they're mutually exclusive β€” it's giving "pick one, you can't have all of them" πŸ™ˆ

  • -help, -h β€” shows you the usage info and then dips. that's it, that's the whole job ✨
  • -version β€” displays the version of this program. slay πŸ’…
  • -verify_arch <architecture 1> [<architecture 2> ...] β€” takes a single input file and checks that the architectures you named are actually present in the file. if they are, she exits with a status of 0. if they're not? exit status 1. vibe check failed, sorry bestie 😭
  • -archs β€” takes a single input file and displays the architectures present in the file. each architecture is separated by a single whitespace. any unknown architectures get displayed as unknown(CPUtype,CPUsubtype). mystery arch, we don't know her πŸ’€
  • -info β€” takes at least one input file and displays the descriptions of each file. the descriptions include the filename and architecture types, separated by whitespace. universal binaries get grouped together first, and thin files come after. the formats look like this:
Architectures in the fat file: <filename> are: <architectures>
Non-fat file: <filename> is architecture: <architecture>
  • -thin β€” takes a single universal binary input file, plus the thin flag followed by an architecture type. requires the output flag to be specified, and outputs a thin binary of the architecture you specified. one slice only, she's being selective βœ‚οΈ
  • -create β€” takes at least one input file and requires the output flag to be specified. outputs a universal binary that combines the input files. it's giving friendship bracelet, all the archs together 🫢
  • -replace β€” takes a single universal binary input file and requires the output flag to be specified. the replace flag is followed by an architecture type, and a thin input file. outputs a universal binary where the specified architecture slice in the universal binary input gets replaced with the contents of the thin input file. glow-up, but just for one slice ✨
  • -segalign β€” an additional flag that can be specified alongside create and replace. the segalign flag is followed by an architecture type, and an alignment. the alignment is a hexadecimal number that is a power of 2. outputs a file in which the slice with the specified architecture has the specified alignment. alignment queen πŸ‘‘

πŸ’€ BUGS

found a bug? to report bugs, please visit <https://github.com/llvm/llvm-project/issues/>. tell them everything, they wanna know πŸ”₯


πŸ‘‘ Author

Maintained by the LLVM Team (https://llvm.org/).


2003-2026, LLVM Project


and that's the page bestie!! this was the LLVM-LIPO(1) page from the LLVM manual, dated 2026-07-16, and the footer said 22 for the source/version β€” so go forth and lipo your binaries, you absolute legend πŸŽ€βœ¨πŸ’–

πŸ“¦ where this page comes from