Kbuild - 从同一个 .c 文件构建多个 .o 文件
Kbuild - build multiple .o files from same .c file
我有两个驱动程序共享一些相同的源文件。大多数共享代码是相同的,但对于特定的驱动程序,我需要 ifdef
一些代码。我希望这些文件位于同一目录中,这样我就没有重复的源代码文件。因此,我需要能够多次构建 .o 文件,并且能够在构建它们时发送 -Dvariable
。
我目前尝试 myusb.ko:
obj-$(CONFIG_DRIVER_USB) += myusb.o
myusb-y += my_main_usb.o
myusb-y += my_init.o
$(obj)/my_main_usb.o: $(src)/my_main.c
$(CC) -DWHICH=USB $< -o $@
确实尝试从 my_main.c 构建 my_main_usb.o,但没有任何正常的 CFLAGS
、包含等
如果我能让它工作,我就可以为 mysdio.ko
做类似的事情
这是正确的方法吗?
我得到了我想要的:
obj-$(CONFIG_DRIVER_USB) += myusb.o
myusb-y += my_main_xxxusb.o
myusb-y += my_init.o
%-xxxusb.o: %.c
$(CC) $(c_flags) -DUSB -c -o $@ $<
obj-$(CONFIG_DRIVER_SDIO) += mysd.o
mysd-y += my_main_xxxsd.o
mysd-y += my_init.o
%-xxxsd.o: %.c
$(CC) $(c_flags) -DSD -c -o $@ $<
我有两个驱动程序共享一些相同的源文件。大多数共享代码是相同的,但对于特定的驱动程序,我需要 ifdef
一些代码。我希望这些文件位于同一目录中,这样我就没有重复的源代码文件。因此,我需要能够多次构建 .o 文件,并且能够在构建它们时发送 -Dvariable
。
我目前尝试 myusb.ko:
obj-$(CONFIG_DRIVER_USB) += myusb.o
myusb-y += my_main_usb.o
myusb-y += my_init.o
$(obj)/my_main_usb.o: $(src)/my_main.c
$(CC) -DWHICH=USB $< -o $@
确实尝试从 my_main.c 构建 my_main_usb.o,但没有任何正常的 CFLAGS
、包含等
如果我能让它工作,我就可以为 mysdio.ko
做类似的事情这是正确的方法吗?
我得到了我想要的:
obj-$(CONFIG_DRIVER_USB) += myusb.o
myusb-y += my_main_xxxusb.o
myusb-y += my_init.o
%-xxxusb.o: %.c
$(CC) $(c_flags) -DUSB -c -o $@ $<
obj-$(CONFIG_DRIVER_SDIO) += mysd.o
mysd-y += my_main_xxxsd.o
mysd-y += my_init.o
%-xxxsd.o: %.c
$(CC) $(c_flags) -DSD -c -o $@ $<