如何找出Linux模块引用另一个模块?

时间:2016-03-16 08:55:21

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

在Linux 2.4.25系统上,我有两个可加载的内核模块com20020xsoe。这些模块应该彼此独立,但/proc/modules有行

xsoe                    4528   0 (unused)
com20020               10112   0 [xsoe]

- 说xsoe指的是com20020。也许存在编程错误,因此xsoe无意中使用了来自com20020的符号。我怎样才能找到这种依赖的原因(最好不要卸载com20020)? (depmod -n没有任何线索。)

1 个答案:

答案 0 :(得分:0)

我在/proc/ksyms中查看了com20020中可疑符号,这些符号可能也出现在xsoe的来源中;最终我看到了这条线

d129e694 debug        [com20020]

那里。 com20020xsoe的来源都定义为unsigned debug; MODULE_PARM(debug, "i");nm com20020.onm xsoe.o的输出中的符号显示为共同

00000004 C debug

解决方法是将对象debug定义为具有内部链接(存储类) static)。

可以使用bash命令(例如

)自动搜索公共符号
join -j 3 <(nm com20020.o) <(nm xsoe.o)|grep C$