Esse cabeçalho não é propositadamente instalado em /usr/include/linux
, mesmo se você tiver os cabeçalhos do kernel instalados. Isso ocorre porque as coisas definidas nesse cabeçalho não fazem parte da ABI estável do kernel; os desenvolvedores do kernel têm permissão para alterar qualquer coisa nesse cabeçalho entre quaisquer dois lançamentos, então você deve referenciar os cabeçalhos específicos da versão do kernel que você deseja que o driver faça o link.
Para os kernels 2.6+, é mais fácil obter o comportamento correto através do uso do kernel padrão esquema do Makefile do driver do que através de tentativas de distorcer o NetBeans. O sistema de compilação de drivers 2.6+ faz um lote de coisas para você, mais do que você obterá de um IDE "fácil de usar" como o Netbeans.
Talvez você possa obter o melhor dos dois mundos. Alguns IDEs permitem usá-lo como um editor glorificado, mas delegam a criação a uma ferramenta make
externa.
Se você tivesse que fazer tudo dentro do Netbeans, poderia fazê-lo praticamente da mesma maneira que construímos drivers para os kernels 2.4 e anteriores. Basicamente, você acaba referenciando diretórios de arquivos de cabeçalho dentro do próprio código-fonte do kernel. No GNU Makefile speak, você teria algo assim:
KERNPATH=/usr/src/kernels/$(shell uname -r)
CFLAGS=-I$(KERNPATH)/include
Fazer o mesmo no Netbeans provavelmente será algo difícil ou impossível:
-
O Netbeans provavelmente não tem como executar um comando shell (
uname -r
) de dentro do IDE como parte do processo de compilação e usar sua saída para substituir em uma variável usada no restante da compilação . -
O caminho de origem do kernel varia de acordo com a distribuição do Linux. Com Makefiles você pode simplesmente escrever um script de shell para descobrir detalhes locais como este, mas duvido que você possa fazer isso com o Netbeans. O caminho acima está correto para um sistema do tipo Red Hat que eu verifiquei enquanto escrevia esta resposta. Eu então verifiquei um sistema Ubuntu e encontrei os mesmos arquivos em
/usr/src/linux-headers-$(uname -r)/include
. Não havia padrões para isso até que o novo sistema de compilação do driver kernel 2.6 fosse desenvolvido.