为什么从linux内核导出的符号不能被模块使用?

时间:2016-12-13 03:03:29

标签: linux kernel

我在内核.c文件中定义了一个变量,例如socket.c,并按如下方式导出:

int abcdefg;
EXPORT_SYMBOL(abcdefg);

然后用“sudo make bzImage”编译它并重新启动。但是当我在我自己的模块中使用它时,当insmod模块时,它会显示“模块中的未知符号”。

所以我去看符号列表。使用时

cat /proc/kallsyms | grep "abcdefg"

什么也没有。

使用时

nm vmlinux | grep "abcdefg"

c1d2b700 B abcdefg

如何在我自己的模块中使用该符号?

https://i.stack.imgur.com/Zv5SM.png

1 个答案:

答案 0 :(得分:0)

听起来您实际上并没有在运行新内核。 –乔纳森·莱因哈特(Jonathon Reinhart)

是的,你是对的!我忘了用“ make install”更新内核。 –珍妮