【问题标题】:Adding only one driver to linux kernellinux内核只添加一个驱动
【发布时间】:2017-03-16 23:03:07
【问题描述】:

我知道在互联网上我可以找到关于“将一个驱动程序添加到 linux 内核”的相同信息,但我无法让它工作。 我需要编译一个ADV7800driver。它基于adv7180驱动代码。

我将驱动程序文件 (adv7800.c) 放入 /linux_source_folder/drivers/media/platform/mxc/capture 文件夹。我也加了

adv7800_converter-objs := adv7800.o
obj-$(CONFIG_MXC_ADV7800_CONVERTER)+=adv7800_converter.o

在同一文件夹的makefile中,并在Kconfigfile中添加信息。

然后我回到 /linux_source_folder 并执行 sudo make menuconfig 并将 adv7800 设置为模块并保存配置。然后是sudo make defconfig,然后是sudo make -j4 modules(现在等待大约2小时),然后是sudo make modules install

因此,我可以看到我在 menuconfig 中配置的每个模块,但我看不到我自己的模块(仅存在 .c 文件)。

我怎样才能正确地做到这一点,我怎样才能只构建一个模块而不构建其他模块(相同的时间)?

【问题讨论】:

  • 在你运行make menuconfig 之后(after make defconfig 正如@Federico 提到的),你可以检查你的.config 文件(在内核的根目录中)以确保MXC_AXC_ADV7800_CONVERTER 是在构建之前设置的——让您不必等待两个小时才能确定您是否做得对。

标签: linux-kernel kernel kernel-module


【解决方案1】:

我不记得在执行指令方面究竟发生了什么,但defconfig 的想法是为给定的架构/平台设置一个默认配置

如您所说,如果您在配置要编译的模块之后运行sudo make defconfig,则很可能您丢失了配置。 defconfig 应该先执行(一次),然后再自定义配置。

关于单个模块的编译,我指给你一个老答案

How to "make" existing Linux kernel module driver after modifying the driver source code.

注意:不要使用sudo编译

【讨论】:

  • 谢谢。我会试试看的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-05
  • 2014-02-05
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-23
相关资源
最近更新 更多