我试图使 virtualbox 内核模块内置,我几乎在这里完成,但在最后一步,它停止编译,因为内核似乎将所有 vbox* 模块视为一个单一的:
drivers/vboxnetadp/built-in.o: In function `cleanup_module':
(.exit.text+0x0): multiple definition of `cleanup_module'
drivers/vboxdrv/built-in.o:(.exit.text+0x0): first defined here
drivers/vboxnetadp/built-in.o: In function `init_module':
(.init.text+0x0): multiple definition of `init_module'
.. suppressed output ...
make[1]: *** [drivers/built-in.o] Error 1
make: *** [drivers] Error 2
有什么想法吗 ?我是这样得到的:
我将所有模块源复制到驱动程序文件夹中,编辑makefile,放入a obj-y += vbox/
,并编辑vbox模块的所有Makefile,将obj-m更改为obj-y以使其成为内置的,非常肮脏的hack,但有效。
编辑
为什么需要这样做?我需要在我的机器上禁用模块加载,所以不应该存在任何模块,我已经将自己编写的所有模块都内置了,现在只剩下 vbox 的了