Eu assumo que o driver em questão é compilado como um módulo. Se você também criou os pré-requisitos como módulos, poderá encontrá-los facilmente. Todos os módulos e suas opções correspondentes são anotados nos makefiles do kernel. Então você pode apenas usar o nome do módulo.
Mas primeiro, você precisa descobrir de quais módulos seu driver depende. Portanto, emita um lsmod
e pesquise seu driver, especialmente na coluna Used by
. Eu, por exemplo, uso o driver rt2800usb
.
$ lsmod | grep rt2800usb
rt2800usb 15392 0
rt2x00usb 8306 1 rt2800usb
rt2800lib 59262 1 rt2800usb
rt2x00lib 34431 3 rt2x00usb,rt2800lib,rt2800usb
usbcore 146570 7 rt2x00usb,rt2800usb
Isso me diz que meu driver precisa dos módulos rt2x00usb
, rt2800lib
, rt2x00lib
e usbcore
. Agora eu procuro os Makefiles para eles. Observe o espaço inicial e o .o
nas sequências de pesquisa
$ fgrep -r --include=Makefile ' usbcore.o'
drivers/usb/core/Makefile:obj-$(CONFIG_USB) += usbcore.o
$ grep -Pr --include=Makefile ' rt2(x|8)00(usb|lib)\.o'
drivers/net/wireless/rt2x00/Makefile:obj-$(CONFIG_RT2X00_LIB) += rt2x00lib.o
drivers/net/wireless/rt2x00/Makefile:obj-$(CONFIG_RT2X00_LIB_USB) += rt2x00usb.o
drivers/net/wireless/rt2x00/Makefile:obj-$(CONFIG_RT2800_LIB) += rt2800lib.o
drivers/net/wireless/rt2x00/Makefile:obj-$(CONFIG_RT2800USB) += rt2800usb.o
E lá temos as opções de configuração necessárias para construir esses módulos. Se você não puder encontrar instantaneamente o culpado, tente ir mais fundo e procure pelas dependências das dependências ... Se você puder adivinhar o nome, isso pode ajudar também para objetos internos (ao contrário dos módulos).
(Todas as saídas de linha de comando nesta postagem foram levemente condensadas e reformatadas para melhor legibilidade).