【问题标题】:Android goldfish armv7 kernel module compilingAndroid金鱼armv7内核模块编译
【发布时间】:2014-09-28 09:48:31
【问题描述】:

我已经为android编译了goldfish armv7内核。

一切正常,我编译的内核在模拟器上运行良好。 我的问题是,我想在我的金鱼内核中插入一个内核模块(.ko)。 但是交叉编译'hello world'内核模块给了我一些错误。 所以我google了一下,发现我需要重新编译我的金鱼内核

'CONFIG_MODULES=y'

选项已启用。 当我在 Internet 上阅读时,我将以下几行添加到我的 .config 脚本中。

CONFIG_MODULES=y
CONFIG_MODULES_FORCE_LOAD=y
CONFIG_MODULES_UNLOAD=y
CONFIG_MODULES_FORCE_UNLOAD=y

但如果我使用这些选项重新编译我的金鱼内核,我会收到以下错误。

  LD      net/built-in.o
  LD      vmlinux.o
  MODPOST vmlinux.o
  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
net/built-in.o: In function `tcp_nuke_addr':
activity_stats.c:(.text+0x4e4b4): undefined reference to `rt6_lookup'
activity_stats.c:(.text+0x4e5c4): undefined reference to `in6addr_any'
make: *** [.tmp_vmlinux1] Error 1
root@ubuntu:/disk2/android/kernel/goldfish# 

一些文档说我应该从脚本中删除 CONFIG_NETFILTER=y。 我做到了,但结果是一样的。

我现在卡住了...有人可以帮助我吗? 提前谢谢你。

【问题讨论】:

    标签: android arm kernel cross-compiling


    【解决方案1】:

    https://source.android.com/devices/tech/kernel.html 上提供了 Linux 配置选项的建议列表,包括 CONFIG_NETFILTER

    【讨论】:

      【解决方案2】:

      我删除了所有与 IPV6、INET6 相关的配置 请记住只禁用与 IPV6 相关的模块,而不是 IPv4。

      # CONFIG_IPV6 is not set
      

      之后我就可以构建它了。

      【讨论】:

        【解决方案3】:

        同样有效

        CONFIG_IPV6=y

        似乎构建尝试将 IPv6 配置为模块,但是如果内核中没有内置 IPv6,则内核使用的某些功能不可用

        【讨论】:

          猜你喜欢
          • 2017-02-10
          • 2016-06-28
          • 2011-05-03
          • 1970-01-01
          • 2012-09-03
          • 1970-01-01
          • 2018-10-20
          相关资源
          最近更新 更多