【问题标题】:How to add extra dependencies to kernel modules如何向内核模块添加额外的依赖项
【发布时间】:2015-02-04 15:41:52
【问题描述】:

我正在尝试将 fbtft 内核模块添加为 openwrt 中的外部包,方法是复制 /package/fbtft 目录中的所有必要文件,就像这个人所做的 https://github.com/GBert/openwrt-misc/tree/master/fbtft

问题是 fbtft 是使用 -DCONFIG_FB_DEFERRED_IO=1 编译的。这个定义被一些帧缓冲结构使用,比如来自 fb.h 的 fb_info。如果定义了 CONFIG_FB_DEFERRED_IO,则结构具有不同的大小。 现在像 fbsysfs.c 这样使用这个 fb_info 结构的 linux 帧缓冲文件不会使用这个 CONFIG_FB_DEFERRED_IO 标志编译,这会导致 fb_info 具有不同的大小。 fbtft 使用 fbsysfs.c 为 fb_info 结构分配内存,但两者的大小不同,因为它们不是使用相同的标志编译的。

我尝试从“make kernel_menuconfig”添加 FB_BROADSHEET 和 FB_AUO_K190X(依赖于 FB_DEFERRED_IO),但 fbsysfs.c 和其他帧缓冲区文件仍未使用所需的标志进行编译(我可以通过查看 .fbsysfs.o 看到这一点。 cmd文件)。 如何在编译时为所有 linux 帧缓冲区文件添加 -DCONFIG_FB_DEFERRED_IO=1 标志,以便它们都具有正确的 fb_info 结构?

谢谢

【问题讨论】:

  • 还有一个问题:如果 .config 文件中的 CONFIG_FB_DEFERRED_IO=y 所有文件都应该用 -DCONFIG_FB_DEFERRED_IO=1 编译?构建工具如何选择使用什么定义标志编译哪些文件?

标签: c kernel openwrt


【解决方案1】:

通过查看 kbuild 文档,似乎帧缓冲区文件不需要任何额外的定义标志,例如 -DCONFIG_FB_DEFERRED_IO=1,因为所有定义都是在所有文件(间接)包含的 include/generated/autoconf.h 中进行的。 现在 fb_info 结构在任何地方都具有相同的大小,并且模块加载时不会出现分段错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2015-12-09
    • 2018-05-09
    • 1970-01-01
    • 2013-04-17
    • 2016-05-20
    • 1970-01-01
    相关资源
    最近更新 更多