我创建了一个内核模块,它使用内核级函数,如vfs_read,write等。这个模块有一个makefile,它构建这个模块来获取.ko文件。我想分析这个.ko文件的objdump输出。但是我发现在.ko文件中没有解析诸如vfs_read和write之类的内核函数。它们刚刚被调用,我的猜测是它们在运行时被解析。 是否可以在makefile中进行一些更改,并在单个.ko文件中静态链接所有这些函数,仅用于分析目的。 我尝试在编译时添加静态,但我没有帮助。 任何人都可以建议这样做吗?
答案 0 :(得分:0)
请参阅ld(1)手册了解-static
的作用:
-static Do not link against shared libraries.
由于内核模块没有链接任何共享库(或任何库),因此它没有效果。
内核使用自己的“函数池”在加载时解析未定义的引用。因此链接只存在于内存中,或者当您将代码放入内核时。