【问题标题】:Query .o file symbols查询 .o 文件符号
【发布时间】:2013-09-25 14:00:18
【问题描述】:

我的 Xcode 工作区中的递归 git 子模块存在问题。我认为 llvm 选择了错误的 .m 文件。

我想通过显示对象二进制文件中可用的方法来确认这一点。

我知道我可以使用ar -t myarchive.a 在静态库中显示.o 文件。有什么方法可以深入挖掘并显示特定 .o 上可用的方法符号?

【问题讨论】:

    标签: ios objective-c unix llvm-clang


    【解决方案1】:

    使用可以使用nm 命令来显示.o.a 文件中的符号。详情请见nmmanpage

    $ nm build/IoEvent.o
    

    (剪辑)

    ---------------- T __ZN9ChessCore18ChessCoreExceptionC1EPKcz
    ---------------- T __ZN9ChessCore18ChessCoreExceptionD0Ev
    ---------------- T __ZN9ChessCore18ChessCoreExceptionD1Ev
    ---------------- D __ZN9ChessCore7IoEvent11m_classnameE
    ---------------- T __ZN9ChessCore7IoEvent3setEv
    ---------------- T __ZN9ChessCore7IoEvent5resetEv
    ---------------- T __ZN9ChessCore7IoEventC1Ei
    ---------------- T __ZN9ChessCore7IoEventC1Ev
    ---------------- T __ZN9ChessCore7IoEventC2Ei
    ---------------- T __ZN9ChessCore7IoEventC2Ev
    ---------------- T __ZN9ChessCore7IoEventD0Ev
    ---------------- T __ZN9ChessCore7IoEventD1Ev
    ---------------- T __ZN9ChessCore7IoEventD2Ev
    ---------------- T __ZNK9ChessCore18ChessCoreException4whatEv
    

    如果您使用的是 C++(我知道您不是),那么您可以使用 c++filt 来解开这些符号名称:

    $ c++filt  __ZN9ChessCore7IoEvent5resetEv
    ChessCore::IoEvent::reset()
    

    【讨论】:

      猜你喜欢
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      • 2010-12-26
      • 1970-01-01
      • 2013-01-24
      相关资源
      最近更新 更多