内核模块中的未定义符号

时间:2013-10-25 16:57:51

标签: linux linux-kernel driver linux-device-driver objdump

我正在开发一个非常复杂的Linux驱动程序。我正在移动一些文件试图“削减脂肪”一点点。我有4个“未定义!”链接阶段的符号。我搜索了我的源代码,我真的不知道这些符号包含在哪里。

我想如果我在我编译的.ko上做了objdump -DS并搜索了这些符号,我可能会从周围的反编译来源告诉他们来自哪里。但是,当我搜索符号时,它们甚至都找不到!

有没有办法告诉WHERE或如何包含未定义的符号?

1 个答案:

答案 0 :(得分:2)

好的,我想出了一个很好的方法。

我使用nm -u列出了我的目标文件中的未定义符号。 (.o个文件)

nm - list symbols from object files

在每个.o上逐个执行此操作并搜索我所知道的未定义符号,向我展示了它们来自哪个文件。然后我有了一个起始位置,可以在我的实际.c文件中找到符号,或者从.c文件中包含一个头文件。

现在它不是大海捞针,而是一大堆干草堆中的一根针,从大海捞针上脱落。