Linux kernel 只向linux内核添加一个驱动程序

Linux kernel 只向linux内核添加一个驱动程序,linux-kernel,kernel,kernel-module,Linux Kernel,Kernel,Kernel Module,我知道,在互联网上,我可以找到关于“向linux内核添加一个驱动程序”的相同信息,但我无法让它工作。 我需要编译一个adv7800驱动程序。它基于adv7180驱动程序代码 我将驱动程序文件(adv7800.c)放入/linux\u source\u文件夹/drivers/media/platform/mxc/capture文件夹。我还要补充一点 adv7800_converter-objs := adv7800.o obj-$(CONFIG_MXC_ADV7800_CONVERTER)+=ad

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

我将驱动程序文件(adv7800.c)放入
/linux\u source\u文件夹/drivers/media/platform/mxc/capture
文件夹。我还要补充一点

adv7800_converter-objs := adv7800.o
obj-$(CONFIG_MXC_ADV7800_CONVERTER)+=adv7800_converter.o
在同一文件夹中的makefile中,并在
Kconfig
文件中添加信息

然后我返回到/linux\u source\u文件夹并执行
sudo make menuconfig
并将adv7800设置为模块并保存配置。然后
sudo make defconfig
,然后
sudo make-j4模块
(现在等待大约2个小时),然后
sudo make模块安装

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


如何才能正确执行此操作?如何仅构建一个模块而不构建其他模块(以相同的时间)?

我不记得执行指令时会发生什么,但
defconfig
的思想是为给定的体系结构/平台设置默认配置

如您所说,如果在配置要编译的模块后运行
sudo make defconfig
,则很可能会丢失配置。应首先执行
defconfig
,然后自定义配置

关于单个模块的编译,我向您指出一个古老的答案


注意:您不应该使用
sudo
来编译我不记得在执行指令时会发生什么,但是
defconfig
的思想是为给定的架构/平台设置默认配置

如您所说,如果在配置要编译的模块后运行
sudo make defconfig
,则很可能会丢失配置。应首先执行
defconfig
,然后自定义配置

关于单个模块的编译,我向您指出一个古老的答案


注意:在运行
makemenuconfig
之后(在@Federico提到的
makedefconfig
之后),您不应该使用
sudo
编译,您可以检查
.config
文件(在内核的根目录中)为了确保在构建之前设置了
MXC\u AXC\u ADV7800\u转换器
,您无需等待两个小时来判断是否正确。运行
后,请设置menuconfig
(在@Federico提到的
设置defconfig
之后),您可以检查
.config
文件(在内核的根目录中)确保在构建之前设置了
MXC\U AXC\U ADV7800\U转换器
,这样您就不用等两个小时才能确定是否正确。谢谢。我试试看。谢谢。我会试试看。