我最近通过了OpenSuse解包内核源rpm离开系统?;由于在我的机器上花费了> 10小时,想象一下我的惊讶,在完成了这里描述的过程之后,我在任何地方都没有找到Module.symvers
!
当我搜索"generate Module.symvers“时,我得到以下内容:
注意:即使设置了modules_prepare CONFIG_MODVERSIONS,“”也不会构建;因此,需要执行完整的内核构建以使模块版本控制work. (Linux内核文档::kbuild:内核文档)得以执行。
..。但是我并没有真正理解它--内核不是在前面的步骤中构建的吗(在上面的链接中描述过)?我当然知道CC需要> 10小时才能生成一大堆*.o文件,而LD则需要将它们链接起来,所以肯定已经构建了一些东西。但如果是这样,那么Module.symvers
在哪里呢?
更明确地说,我应该调用什么命令来生成Module.symvers?我知道make prepare
不能工作--但是命令是什么呢?
发布于 2011-11-16 22:51:45
Module.symvers
是在编译模块时生成的。运行make modules
,您应该在内核树的根处得到一个Module.symvers
文件。
请注意,如果您只运行make
而不运行make modules
,那么您还没有构建任何模块。来自内核本身的符号(vmlinux
或依赖于体系结构的图像格式之一)是以System.map
表示的。
发布于 2017-07-16 02:47:51
对于那些在googling上搜索到这个问题的人,在编译德里克·莫洛伊的一个示例LKM时得到的警告:你可以简单地用touch Modules.symvers
做一个空的。如果您的内核不使用modversion(操作系统使用的CRCs来帮助确保模块与内核匹配),而且您的模块对其他模块没有任何依赖,那么这将足以抑制警告。
WARNING: Symbol version dump ./Module.symvers
is missing; modules will have no dependencies and modversions.
该空文件与gcc生成的文件一样好,该文件的符号都具有相同的0x00000000
CRC值,在没有修改的系统中。
https://unix.stackexchange.com/questions/24704
复制相似问题