Eu geralmente abordo essa questão assim. Eu estou em um sistema Fedora 19 mas isso funcionará em qualquer distro que forneça locate
services.
$ locate "linux/init.h" | grep include
/usr/src/kernels/3.13.6-100.fc19.x86_64.debug/include/linux/init.h
/usr/src/kernels/3.13.7-100.fc19.x86_64.debug/include/linux/init.h
/usr/src/kernels/3.13.9-100.fc19.x86_64/include/linux/init.h
/usr/src/kernels/3.13.9-100.fc19.x86_64.debug/include/linux/init.h
Seus caminhos serão diferentes, mas a chave é que você queira perguntar a locate
para encontrar o que está sendo incluído ("linux / init.h") e filtrar esses resultados procurando a palavra-chave include
.
Existem também maneiras específicas de distribuição para procurar esses locais usando RPM (Redhat) ou APT (Debian / Ubuntu).
gcc
Observe, entretanto, que os caminhos dentro do arquivo C / C ++ são relativos:
#include <linux/init.h>
Isso ocorre quando você chama o compilador, gcc
, pode substituir o local dos arquivos de inclusão que deseja usar. Isso é controlado através do switch -I <dir>
.
trecho do man gcc
-I dir
Add the directory dir to the list of directories to be searched for
header files. Directories named by -I are searched before the
standard system include directories. If the directory dir is a
standard system include directory, the option is ignored to ensure
that the default search order for system directories and the special
treatment of system headers are not defeated . If dir
begins with "=", then the "=" will be replaced by the sysroot
prefix; see --sysroot and -isysroot.
Módulos externos
Há este artigo que discute como alguém incorporaria o desenvolvimento de seus próprios módulos do kernel no "ambiente de criação" incluído no kernel do Linux. O artigo é intitulado: Portando driver: compilando módulos externos . A organização do makefile do Kernel também é abordada neste artigo: makefiles.txt .
Para iniciantes do Kernel, há também este artigo: KernelHeaders do site kernelnewbies.org.
NOTA: O Kernel usa o sistema KBuild, que é coberto aqui como parte da documentação incluída no Kernel.