LLVM-LIPO(1)

πŸ’… LLVM-LIPO β€” the glow-up manual

okay so bestie, welcome to LLVM-LIPO(1), from the LLVM fam (that's the manual name btw, it's giving "cool tool, cooler docs"). this is the LLVM tool for manipulating universal binaries, and yes she's iconic, yes she's useful, and yes we're gonna get you fluent in her by the end of this page. πŸ¦‹


✨ SYNOPSIS ✨

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

literally that's it. filenames, options, slay. πŸŽ€


🌸 DESCRIPTION 🌸

llvm-lipo is that girl who does three things and does all of them flawlessly:

  • she can create universal binaries out of Mach-O files πŸ—οΈ
  • she can extract regular object files from universal binaries 🧲
  • she can display architecture information about both universal and regular files πŸ‘€

like, a triple threat. main character energy fr fr.


πŸ‘‘ COMMANDS πŸ‘‘

heads up bestie: these commands are mutually exclusive. you pick one. no polyamory for flags here, it's giving monogamy. πŸ’€

  • -help, -h β€” show you the usage info and then dip (exit). super chill of her.
  • -version β€” spill the tea on which version of this program you're running. πŸ’–
  • -verify_arch <architecture 1> [<architecture 2> ...] β€” take a single input file and check that the architectures you listed are actually present in it. if they are, she exits with status 0. if not, status 1. no cap, that's the whole vibe. βœ…
  • -archs β€” take a single input file and display the architectures present in it. each architecture is separated by a single whitespace. anything she doesn't recognize gets printed as unknown(CPUtype,CPUsubtype). mysterious. we respect it. πŸ•΅οΈ
  • -info β€” take at least one input file and display the description of each one. descriptions = the filename and the architecture types, separated by whitespace. universal binaries get grouped together first, then the thin files after. and here's exactly what she prints, character for character:
Architectures in the fat file: <filename> are: <architectures>
Non-fat file: <filename> is architecture: <architecture>

πŸ“‹βœ¨

  • -thin β€” take a single universal binary input file, plus the thin flag followed by an architecture type. she requires the output flag to be specified. result? a thin binary of the architecture you asked for. glow-down but make it intentional. 🧚
  • -create β€” take at least one input file and, again, she requires the output flag. result? a universal binary combining all your input files. besties united. 🫢
  • -replace β€” take a single universal binary input file and, yep, requires the output flag. the replace flag is followed by an architecture type, and then a thin input file. result? a universal binary where the specified architecture slice in the universal binary input gets replaced with the contents of the thin input file. out with the old, in with the new. πŸ’…
  • -segalign β€” an additional flag you can use alongside create and replace. it's followed by an architecture type, and an alignment. the alignment is a hexadecimal number that is a power of 2 (do not come for me with your non-power-of-2 nonsense, bestie 😭). result? a file where the slice with the specified architecture has the specified alignment. precise. aligned. obsessed. ⭐

πŸ› BUGS πŸ›

found a bug? first of all, rip, second of all, please go report it here:

https://github.com/llvm/llvm-project/issues/

she wants to know. she wants to grow. 🌈


πŸ’œ AUTHOR πŸ’œ

maintained by the LLVM Team (https://llvm.org/). they're the parents and they're doing great.


2003-2025, LLVM Project. two decades of service, and she's still that girl. πŸ‘‘


lowkey if you made it this far you're officially a lipo scholar. go create something beautiful. ✨

LLVM-LIPO(1) β€” manual page 20 β€” dated 2025-09-03 β€” brought to you by LLVM. mwah, catch you on the next man page bestie πŸŽ€πŸ’–

πŸ“¦ where this page comes from