nm - 显示在.so文件中声明符号的文件

时间:2018-04-11 15:03:16

标签: shared-libraries nm

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

//file.cpp
int get_data();

int main(){
    return 0;
}

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

1 个答案:

答案 0 :(得分:1)

  

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

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

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

如果您这样做,可以使用objdump -dS file.so来查找引用所在的file.cpp