LLVM-LINK(1)

okay so real talk, this is the man page for llvm-link β€” it lives in the LLVM section of your manuals, and it's literally the bitcode linker. group chat open, let's go 🫢


✨ NAME ✨

llvm-link β€” LLVM bitcode linker

🌸 SYNOPSIS 🌸

llvm-link [options] filename ...

πŸ¦‹ DESCRIPTION πŸ¦‹

so llvm-link is the girl that takes a whole lil friend group of LLVM bitcode files and links them together into one single LLVM bitcode file. iconic behaviour honestly.

and the way it writes the output file to standard output unless you use the -o option to name a file… main character energy πŸ’…

πŸ‘‘ OPTIONS πŸ‘‘

  • -f β€” turns on binary output on terminals. normally llvm-link is like "bestie no" and refuses to write raw bitcode output if the output stream is a terminal. with this flag it writes raw bitcode regardless of the output device. no cap.
  • -o filename β€” names the output file. and if filename is -, then llvm-link writes its output to standard output. cute.
  • -S β€” writes the output in LLVM intermediate language instead of bitcode. (translation: she's giving text, not binary ✨)
  • -d β€” if you specify it, llvm-link prints a human-readable version of the output bitcode file to standard error.
  • --help β€” prints a summary of the command line options. when you're lost, she's got you πŸŽ€
  • -v β€” verbose mode. prints info about what llvm-link is doing. typically that means a message for each bitcode file linked in and for each library found. so it's like she's live-texting you the whole link πŸ“
  • --override filename β€” adds the passed-in file to the link and overrides symbols that have already been declared with the definitions in the file that is passed in. this flag can be specified multiple times so multiple files can act as overrides. and if a symbol is declared more than twice, the definition from the file declared last takes precedence. last one wins, periodt.
  • --import function:filename β€” specifies a function that should be imported from the specified file for linking with ThinLTO. you can specify this option multiple times to import multiple functions.
  • --summary-index filename β€” specifies the path to a file containing the module summary index with the results of an earlier ThinLTO link. > bestie this one is required when --import is used. don't forget it, it's giving mandatory πŸ’€
  • --internalize β€” internalizes the linked symbols.
  • --disable-debug-info-type-map β€” disables the use of a uniquing type map for debug info.
  • --only-needed β€” links only needed symbols. minimal queen 🌈
  • --disable-lazy-loading β€” disables lazy module loading.
  • --suppress-warnings β€” suppresses all linker warnings. nothing to see here 🫢
  • --preserve-bc-uselistorder β€” preserves the use-list order when writing LLVM bitcode.
  • --preserve-ll-uselistorder β€” preserves the use-list order when writing LLVM assembly.
  • --ignore-non-bitcode β€” does not error out when a non-bitcode file is encountered while processing an archive.

⭐ EXIT STATUS ⭐

if llvm-link succeeds, she exits with 0. otherwise, if an error occurs, she exits with a non-zero value. simple as that πŸ’œ

πŸ’œ Author πŸ’œ

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

2003-2026, LLVM Project


and that's the whole vibe check, bestie πŸ’– this page is from the LLVM Project, dated 2026-07-16, version 22 β€” stay slay, link responsibly, and may all your symbols resolve πŸ™ˆβœ¨

πŸ“¦ where this page comes from