c - 如何向内核模块添加额外的依赖项

标签 c kernel openwrt

我正在尝试通过复制/package/fbtft 目录中的所有必要文件来将 fbtft 内核模块添加为 openwrt 中的外部包,就像这个人那样 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 结构?

谢谢

最佳答案

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

关于c - 如何向内核模块添加额外的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278663/

相关文章:

c - 使用GDB运行时 fatal error 消失

linux - 拒绝访问 android.git.kernel.org

linux - shell脚本中的命令返回

openwrt - 如何通过 ssh 重置 luci 密码

c - 从参数使用 Execvp 到 ls

c - scanf 之后 fgets 不起作用

c - 替换一段代码中的 stdin

linux - 使用 buildroot 和 uboot 配置 initramfs

c - linux的用户空间如何分配内存

c++ - 核心转储中缺少共享库负载偏移