Linux kernel 如果两个内核模块导出相同的符号会发生什么

Linux kernel 如果两个内核模块导出相同的符号会发生什么,linux-kernel,Linux Kernel,如果两个内核模块包含导出符号(a),a被定义为:int a,如果插入两个模块,会发生什么?将使用哪个“a”?您不能在内核中插入重复的符号。例如: 加载到我的内核中的xor模块 在xor模块中导出的xor\u块符号 在我创建的模块中,另一个导出的xor_块符号 从insmod 来自dmesg的重复错误消息 我希望内核的编译失败,重复错误。您应该考虑选择正确的答案。你知道,做一个好公民。 nwatkins@kyoto:~$ lsmod | grep xor xor

如果两个内核模块包含导出符号(a),a被定义为:int a,如果插入两个模块,会发生什么?将使用哪个“a”?

您不能在内核中插入重复的符号。例如:

加载到我的内核中的
xor
模块 在
xor
模块中导出的
xor\u块
符号 在我创建的模块中,另一个导出的
xor_块
符号 从
insmod
来自
dmesg的重复错误消息

我希望内核的编译失败,重复错误。您应该考虑选择正确的答案。你知道,做一个好公民。
nwatkins@kyoto:~$ lsmod | grep xor
xor                     4685  1 async_xor
nwatkins@kyoto:~$ nm /lib/modules/2.6.32-24-generic/kernel/crypto/xor.ko  | grep xor_blocks
0000000000000000 r __kcrctab_xor_blocks
0000000000000000 r __kstrtab_xor_blocks
0000000000000000 r __ksymtab_xor_blocks
0000000000000bb0 T xor_blocks
nwatkins@kyoto:~$ nm mod-t1.ko  | grep xor
0000000000000000 r __kcrctab_xor_blocks
0000000000000000 r __kstrtab_xor_blocks
0000000000000000 r __ksymtab_xor_blocks
0000000000000000 T xor_blocks
nwatkins@kyoto:~$ sudo insmod mod-t1.ko 
insmod: error inserting 'mod-t1.ko': -1 Invalid module format
[422002.174033] mod_t1: exports duplicate symbol xor_blocks (owned by xor)