一般情况下,如果需要编译kernel的某个模块,我们通常在Makefile中使用如下格式:
1 | drivers/usb/host/Makefile |
通过配置CONFIG_XXX
来决定编译某个模块为 build-in 或者是编译成module。
但是,在 drivers/usb/gadget/Makefile
文件中,有如下的用法:
1 | obj-$(CONFIG_USB_LIBCOMPOSITE) += libcomposite.o |
其中libcomposite
为目标,下面两行表示要生成这个目标的依赖,也就是需要usbstring.c
、config.c
、composite.c
等。
关于这两种用法的解释,在Documentation/kbuild/makefiles.txt
的3.1 Goal definitions
和3.3 Loadable module goals - obj-m
做了详细的描述,现摘录如下:
1 | --- 3.1 Goal definitions |
1 | --- 3.3 Loadable module goals - obj-m |