LLVM-LINK(1)

πŸ’– NAME πŸ’–

bestie, this is llvm-link β€” the LLVM bitcode linker. yes, THE linker. the one that takes your little bitcode babies and makes them one big happy file. it's giving ✨ glue ✨.

πŸ¦‹ SYNOPSIS πŸ¦‹

llvm-link [options] filename ...

🌸 DESCRIPTION 🌸

okay so here's the tea: llvm-link grabs a bunch of LLVM bitcode files and links them all together into one single LLVM bitcode file. iconic behavior, honestly.

and where does it put it? straight to standard output, bestie β€” unless you use the -o option to tell it a filename. then it goes there instead. slay.


πŸ‘‘ OPTIONS πŸ‘‘

  • -f β€” enables binary output on terminals. so like, normally llvm-link is a little shy and refuses to write raw bitcode output when the output stream is a terminal. with this flag? it writes raw bitcode anyway, no matter what device it's outputting to. no shame. periodt.
  • -o filename β€” tells it the output file name, bestie. and if filename is "-", then llvm-link writes its output to standard output. cute, right?
  • -S β€” writes the output in LLVM intermediate language instead of bitcode. glow up, but make it textual πŸ’….
  • -d β€” if you say so, llvm-link prints a human-readable version of the output bitcode file to standard error. it's giving "let me read it to you".
  • --help β€” prints a summary of the command line options. the classic.
  • -v β€” verbose mode, bestie. it 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 chatty. love that for us.
  • --override <filename> β€” adds the file you passed in to the link, and overrides symbols that were already declared with the definitions in the file that's passed in. this flag can be specified multiple times so multiple files can act as overrides. and if a symbol gets declared more than twice? the definition from the file declared last takes precedence. last one in wins, no cap.
  • --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. gotta catch 'em all 🫢.
  • --summary-index <filename> β€” specifies the path to a file containing the module summary index with the results of an earlier ThinLTO link. and heads up: this option is required when --import is used. don't skip it, fr fr.
  • --internalize β€” internalizes the linked symbols. they're staying home now πŸ™ˆ.
  • --disable-debug-info-type-map β€” disables the use of a uniquing type map for debug info. yeah. that.
  • --only-needed β€” links only needed symbols. minimalist queen πŸ‘‘.
  • --disable-lazy-loading β€” disables lazy module loading. no more procrastination, modules. we're working NOW.
  • --suppress-warnings β€” suppresses all linker warnings. ignorance is bliss, bestie πŸ’€.
  • --preserve-bc-uselistorder β€” preserves the use-list order when writing LLVM bitcode. keep the vibes in order.
  • --preserve-ll-uselistorder β€” preserves the use-list order when writing LLVM assembly. same energy, different format.
  • --ignore-non-bitcode β€” do not error out when a non-bitcode file is encountered while processing an archive. just let it slide. we move.

⭐ EXIT STATUS ⭐

if llvm-link succeeds, it exits with 0. yay!! πŸŽ€

otherwise, if an error occurs, it exits with a non-zero value. so if the number ain't zero, something went wrong, bestie. read the room (and the error).


🌈 AUTHOR 🌈

maintained by the LLVM Team (https://llvm.org/). they're the moment, honestly.

2003-2026, LLVM Project


and that's the whole page, bestie β€” this was the LLVM manual's llvm-link(1), version 21, dated 2026-07-22. go link something iconic βœ¨πŸ¦‹πŸ’…

πŸ“¦ where this page comes from