如何在修改驱动程序源代码后"制作"现有的Linux内核模块驱动程序

Bry*_*mas 2 kernel makefile

我对Linux USB Wi-Fi卡驱动程序进行了一些微小的修改,以插入一些日志记录(printk语句).我正在松散地遵循有关如何重新编译/加载模块的指南,其中指出我需要执行make以构建.ko文件.有一个现有的Makefile工作目录(/usr/src/linux/drivers/net/wireless/rtl818x/rtl8187/),其内容为:

rtl8187-objs        := dev.o rtl8225.o leds.o rfkill.o

obj-$(CONFIG_RTL8187)   += rtl8187.o

ccflags-y += -Idrivers/net/wireless/rtl818x
Run Code Online (Sandbox Code Playgroud)

当我make在这个目录中执行时,我得到:

make: *** No targets.  Stop.
Run Code Online (Sandbox Code Playgroud)

根据这个,这意味着"一些makefile文件被发现,但它不包含任何默认的目标,并没有在命令行上给出.GNU化妆无关,在这种情况下做的."

所以我的问题是,这在我想要做的事情的背景下意味着什么,以及如何生成.ko我声称下一步所需的文件?

Fed*_*ico 6

您必须从Linux源代码的顶级目录(/ usr/src/linux /)运行make.确保您的驱动程序包含在/usr/src/linux/.config文件中.因此,使用您的驱动程序构建内核.如果您不想重建整个内核,请阅读更多:)

如果要重新构建目录中的所有模块:

make M=drivers/net/wireless/rtl818x/rtl8187/
Run Code Online (Sandbox Code Playgroud)

如果要在目录中重新构建单个模块:

make M=drivers/net/wireless/rtl818x/ CONFIG_RTL8187=m
Run Code Online (Sandbox Code Playgroud)

*CONFIG_RTL8187*名称可在drivers/net/wireless/rtl818x/Kconfig(CONFIG_ + RTL8187)中找到

它应该也适用于:

make drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
Run Code Online (Sandbox Code Playgroud)