nm - 显示在 .so 文件中声明符号的文件
Posted
技术标签:
【中文标题】nm - 显示在 .so 文件中声明符号的文件【英文标题】:nm - show file that declares a symbol in a .so file 【发布时间】: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 是否也可以显示文件名?对于较大的项目,能够确定哪个文件声明了未解析的符号会很有帮助。
【问题讨论】:
【参考方案1】:如果我将此文件编译成一个共享对象文件 file.so,我应该得到一个“U”来表示
get_data
符号
你错了:因为没有引用get_data
,你实际上不会得到U
。
回答您的问题:file.cpp
引用 get_data
符号的信息消失了,除非您使用调试信息编译了 file.cpp
。
如果您这样做了,您可以使用 objdump -dS file.so
来查找 file.cpp
是引用的来源。
【讨论】:
以上是关于nm - 显示在 .so 文件中声明符号的文件的主要内容,如果未能解决你的问题,请参考以下文章