我正在尝试在可执行文件上处理 nm 或 readelf -s 的输出。但是,我无法在输出中区分静态函数。
这是我正在使用的内容:
测试.c
static int foo() {
int x = 6;
}
main() {}
其他.c
static int foo() {
int x = 5;
}
我像这样编译这些:
gcc -o test test.c other.c
然后运行 nm 命令以获取所有符号:
nm test
其中出现了以下两个符号(对于我的静态函数):
00000000004004ed t foo
0000000000400500 t foo
有没有一种方法可以区分特定的 foo 函数来自哪个文件?或者我需要在编译之前做一些魔法才能让它工作吗?
对于我的用例,我应该补充一点,我可以访问最终的二进制文件和它使用的目标文件,但我实际上无法自己构建它以确保它具有符号表。
谢谢!