构建 Linux 内核 3.0.4 版本时出现 __modver_version_show 未定义错误

构建 Linux 内核 3.0.4 版本时出现 __modver_version_show 未定义错误

我尝试在 VirtualBox 中的 ubuntu 11.10 上构建 Linux 内核 3.0.4。以下是我的步骤:

  1. 下载源代码
  2. tar xjvf linux-source-3.0.0.tar.bz2
  3. cd linux-source-3.0.0
  4. 制作 menuconfig,不做任何改变,但使用默认配置并保存为 .config
  5. 制作

实际上我认为应该是 3.0.4,因为从 Makefile 中我可以看到

VERSION = 3
PATCHLEVEL = 0
SUBLEVEL = 4
EXTRAVERSION =

然后在第二阶段制作模块时,发生了一个错误:

ERROR: "__modver_version_show" [drivers/staging/rts5139/rts5139.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2

也许是因为 3.0.4 是一个新版本,所以我找不到任何相同的问题或任何解决方案。

答案1

__modver_version_show() 是一个内部函数,仅在您未启用 CONFIG_MODULE 时使用已启用 CONFIG_SYSFS。换句话说,仅有的当您的 .config 中有 CONFIG_SYSFS 但没有 CONFIG_MODULE 时,您将看到此错误。

对于普通桌面,!CONFIG_MODULE && CONFIG_SYSFS 是一个损坏的配置。

鉴于您所做的设置,您应该首先将发行版提供的内核的 .config 复制到内核源代码的顶级目录,然后执行“make oldconfig”。

我不是 ubuntu 用户,要找到您的发行版内核 .config,请搜索您的 /boot 或检查您是否有 /proc/kconfig.gz,然后将其复制(您需要 zcat 来复制 kconfig.gz,因为它是压缩的)到正确的位置。

答案2

假设 Ubuntu 的配置如下,

CONFIG_MODULE=Y
CONFIG_SYSFS=Y

我不认为问题出在这个选项上。我倾向于绕过这个驱动程序。

驱动模块 » 暂存 » RTS5139 »<N>

相关内容