LLVM-LIPO(1)

πŸ’– llvm-lipo β€” the LLVM manual, but make it a group chat πŸ’–

okay bestie, welcome to the llvm-lipo(1) page, straight out of the LLVM manual set. this is the little tool that does universal binary ✨things✨ and honestly? it's giving main character energy for Mach-O files. let's get into it 🫢


🌸 NAME 🌸

llvm-lipo β€” the LLVM tool for manipulating universal binaries πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

llvm-lipo [filenames…] [options]

πŸ¦‹ DESCRIPTION πŸ¦‹

so what does llvm-lipo actually do, you ask? three iconic things, no cap:

  • it can create universal binaries from Mach-O files 🌈
  • it can extract regular object files from universal binaries ✨
  • it can display architecture information about both universal and regular files πŸ‘‘

πŸ‘‘ COMMANDS πŸ‘‘

bestie, listen β€” llvm-lipo supports the following commands, and they are mutually exclusive. pick one, you can't have them all, that's the rule πŸ’€

  • -help, -h β€” show the usage info and dip. that's it, that's the whole vibe.
  • -version β€” display the version of this program. iconic, lowkey.
  • -verify_arch <architecture 1> [<architecture 2> ...] β€” take a single input file and verify that the architectures you named are actually present in the file. if they are? exit with a status of 0. if not? exit with a status of 1. it's a vibe check fr fr.
  • -archs β€” take a single input file and display the architectures present in the file. each architecture is separated by a single whitespace. unknown architectures are displayed as unknown(CPUtype,CPUsubtype).
  • -info β€” take at least one input file and display the descriptions of each file. the descriptions include the filename and architecture types separated by whitespace. universal binaries are grouped together first, followed by thin files. the output looks like this:
    • 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. this one requires the output flag to be specified, and it outputs a thin binary of the specified architecture 🧚
  • -create β€” take at least one input file and require the output flag to be specified. outputs a universal binary combining the input files. it's the group project of binaries, honestly 🌸
  • -replace β€” take a single universal binary input file and require 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. out with the old, in with the new πŸ’…
  • -segalign β€” an additional flag you can specify 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 where the slice with the specified architecture has the specified alignment ⭐
heads up bestie: -thin, -create and -replace all require the output flag to be specified. do not forget it, i am begging you πŸ™ˆ

😭 BUGS 😭

found a bug? not the cute kind? to report bugs, please visit <https://github.com/llvm/llvm-project/issues/>. they will handle it, we're just the messenger 🫢


πŸ’œ AUTHOR πŸ’œ

Maintained by the LLVM Team (https://llvm.org/). absolute legends, fr.


2003-2025, LLVM Project. periodt. πŸ’–


and that's the whole page, bestie! this was the LLVM release 14 version, dated 2025-05-22 β€” go forth and manipulate those universal binaries, you've got this βœ¨πŸŽ€πŸ’…

πŸ“¦ where this page comes from