nm
是否可以显示在.so文件中声明符号的文件?让我们说我有一些文件:
//file.cpp
int get_data();
int main(){
return 0;
}
如果我将此文件编译成共享对象文件file.so
,我应该得到一个" U"我使用get_data
时的nm -C file.so
符号。 nm是否也可以显示文件名?对于较大的项目,能够确定哪个文件声明未解析的符号会很有帮助。
答案 0 :(得分:1)
如果我将此文件编译成共享对象文件file.so,我应该得到
get_data
符号的“U”
你错了:因为没有引用get_data
,你实际上不会得到U
。
要回答您的问题:file.cpp
引用get_data
符号的信息已消失,除非您使用调试信息编译file.cpp
。
如果您这样做,可以使用objdump -dS file.so
来查找引用所在的file.cpp
。