我正在开发一个非常复杂的Linux驱动程序。我正在移动一些文件试图“削减脂肪”一点点。我有4个“未定义!”链接阶段的符号。我搜索了我的源代码,我真的不知道这些符号包含在哪里。
我想如果我在我编译的.ko上做了objdump -DS
并搜索了这些符号,我可能会从周围的反编译来源告诉他们来自哪里。但是,当我搜索符号时,它们甚至都找不到!
有没有办法告诉WHERE或如何包含未定义的符号?
答案 0 :(得分:2)
好的,我想出了一个很好的方法。
我使用nm -u
列出了我的目标文件中的未定义符号。 (.o
个文件)
nm - list symbols from object files
在每个.o
上逐个执行此操作并搜索我所知道的未定义符号,向我展示了它们来自哪个文件。然后我有了一个起始位置,可以在我的实际.c
文件中找到符号,或者从.c
文件中包含一个头文件。
现在它不是大海捞针,而是一大堆干草堆中的一根针,从大海捞针上脱落。