【发布时间】:2010-08-11 01:45:27
【问题描述】:
如果两个内核模块包含EXPORT_SYMBOL(a),a定义为:int a,如果插入两个模块会发生什么?将使用哪个“a”?
【问题讨论】:
-
我希望内核编译失败并出现重复错误。
-
您应该考虑选择正确的答案。你知道,做一个好的 stackoverflow 公民。
标签: linux-kernel
如果两个内核模块包含EXPORT_SYMBOL(a),a定义为:int a,如果插入两个模块会发生什么?将使用哪个“a”?
【问题讨论】:
标签: linux-kernel
您不能将重复的符号插入内核。示例:
xor 模块nwatkins@kyoto:~$ lsmod | grep xor
xor 4685 1 async_xor
xor 模块中导出的xor_blocks 符号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
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
insmod 报告的错误
nwatkins@kyoto:~$ sudo insmod mod-t1.ko
insmod: error inserting 'mod-t1.ko': -1 Invalid module format
dmesg 的重复错误消息
[422002.174033] mod_t1: exports duplicate symbol xor_blocks (owned by xor)
【讨论】: