【问题标题】:nm - show file that declares a symbol in a .so filenm - 显示在 .so 文件中声明符号的文件
【发布时间】:2018-04-11 15:03:15
【问题描述】:

nm 是否可以显示在 .so 文件中声明符号的文件?假设我有一些文件:

//file.cpp
int get_data();

int main(){
    return 0;
}

如果我将此文件编译为共享对象文件file.so,当我使用nm -C file.so 时,get_data 符号应该会得到一个“U”。 nm 是否也可以显示文件名?对于较大的项目,能够确定哪个文件声明了未解析的符号会很有帮助。

【问题讨论】:

    标签: shared-libraries nm


    【解决方案1】:

    如果我将此文件编译成一个共享对象文件 file.so,我应该得到一个“U”来表示 get_data 符号

    你错了:因为没有引用get_data,你实际上不会得到U

    回答您的问题:file.cpp 引用 get_data 符号的信息消失了,除非您使用调试信息编译了 file.cpp

    如果您这样做了,您可以使用 objdump -dS file.so 来查找 file.cpp 是引用的来源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 2014-12-16
      • 2018-08-05
      • 2016-09-28
      相关资源
      最近更新 更多