交叉编译linux模块没有目标内核头文件,但目标Module.symvers可用

时间:2016-02-23 23:31:43

标签: module linux-kernel cross-compiling

我正在玩一个运行linux的嵌入式系统(Bebop Drone)。我有:

  1. 来自制造商的linux内核源代码树(3.4.11)(thx到GPL)
  2. 来自制造商的
  3. .config 文件
  4. 来自制造商的“kernel-headers”
  5. 设备上的NO / lib / modules / X / build 区域
  6. 生活目标内核和设备上的一些模块(arm7)
  7. Ubuntu 15作为交叉编译平台
  8. 通过运行内核重新创建Modules.symvers https://glandium.org/blog/?p=2664&cpage=1#comment-854639
  9. 我想将模块option.ko添加到设备中。 我在.configm usbserial,usb_wwan,et.al中配置了所需的选项。 (通过make oldconfig,make menuconf)

    将模块加载到目标系统的所有尝试都失败,dmegs声明ko文件的module_layout具有与内核所需的CRC不同的CRC。 将“正确”CRC重新编入ko文件只会将投诉转移到模块所需的另一个符号。

    无论我在交叉编译时尝试什么,* .ko文件都有不匹配的符号CRC!

    我不知道何时从目标系统潜入“不匹配”的Module.symvers,模块交叉编译的最后阶段破坏了我的诡计并重新创建了Module.symvers,覆盖了所需的目标CRC。

    为什么这个symvers问题首先出现,考虑到我正在使用制造商正在发布的源代码树(以及据说正在使用的内核)?

    如何修复symvers不匹配问题,为旧的运行内核生成“新”模块

    TIA

1 个答案:

答案 0 :(得分:1)

案例解决了,编译器很关键,它必须是/ proc / version中的一个指定,见上面的第四条评论。