【问题标题】:'-print_statistics' linker option produces error in Xcode'-print_statistics' 链接器选项在 Xcode 中产生错误
【发布时间】:2019-01-18 01:11:56
【问题描述】:

我想分析一下我们大型 C++ 项目的链接阶段,因为使用 Xcode 或 xcodebuild 链接 iOS 项目时,它最多需要 30 分钟。

$ man ld 表示可以使用“-print_statistics”命令行选项。但是通过 Build Settings 中的“Other Linker Flags”设置此选项会在 Ld 期间产生错误:

clang: error: unknown argument: '-print_statistics'

看起来 Xcode 构建系统如何检查“其他链接器标志”并且无法识别“-print_statistics”。

【问题讨论】:

    标签: c++ xcode clang llvm ld


    【解决方案1】:

    正如@shaiba 猜测的那样,Xcode 使用 Clang/LLVM。在幕后 LLVM 使用 LLD 链接器,它指向

    "LLD is a drop-in replacement for the GNU linkers. That accepts the same command line arguments and linker scripts as GNU"
    

    作为主要功能之一。

    您尝试直接传递链接器参数的错误。它应该通过clang

    -Wl,<arg>,<arg2>...
    Pass the comma separated arguments in <arg> to the linker
    
    -X
    -Xlinker <arg>, --for-linker <arg>, --for-linker=<arg>
    Pass <arg> to the linker
    

    尝试设置-Wl,-print_statistics

    【讨论】:

    • 你是对的!可以使用 Xcode Build Settings 中的“Other Linker Flags”传递-Wl,-print_statistics
    【解决方案2】:

    XCode 使用 Clang/LLVM,所以我猜它也会使用 lld 作为链接器,而不是 ld,它是 GNU 链接器。 lld 没有-print-statistics,因此报错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 2013-11-10
      相关资源
      最近更新 更多