整体 link 时间优化是否适用于静态库?

Does monolithic link-time optimization work with static libraries?

This article 讨论目标文件如何包含用于 link 时间优化的 LLVM IR。但是,如果 linker 正在编译一个包含静态库的项目,那么静态库是否也有这些信息呢?如果是,是在什么情况下?

是的。静态库也可以包含 llvm-IR-bitcode。

一个。使用 llvm-IR-bitcode

构建静态库的步骤
  1. 在 Xcode 静态库项目中:
    Build Settings->Enable Bitcode ,切换到Yes
  2. Product->Archive

乙。检查静态库是否包含 llvm-IR-bitcode。

  1. otool -l libDemo.a
  2. 在输出中,搜索 __bitcode 并检查 size 是否大于 000001。
    如果 size > 000001 : 那么静态库包含 llvm-IR-bitcode
    否则:静态库不包含 llvm-IR-bitcode。

希望这能回答您的问题。