O que exatamente são os cabeçalhos do kernel do Linux? [duplicado]

20

Eu sei que se eu quiser compilar meu próprio kernel Linux, eu preciso dos cabeçalhos do kernel do Linux, mas para que exatamente eles são bons?

Descobri que sob /usr/src/ parece haver dezenas de arquivos de cabeçalho C. Mas qual é o propósito deles, não estão incluídos diretamente nas fontes do kernel?

    
por JohnnyFromBF 06.09.2012 / 12:11

3 respostas

21

Os arquivos de cabeçalho definem uma interface: eles especificam como as funções no arquivo de origem são definidas.

Eles são usados para que um compilador possa verificar se o uso de uma função está correto, já que a assinatura da função (valor de retorno e parâmetros) está presente no arquivo de cabeçalho. Para esta tarefa, a implementação real da função não é necessária.

Você poderia fazer o mesmo com as fontes completas do kernel, mas você instalaria muitos arquivos desnecessários.

Exemplo: se eu quiser usar a função

int foo(double param);

em um programa eu não preciso saber como a implementação de foo é, eu só preciso saber que ele aceita um único parâmetro ( double ) e retorna um inteiro.

    
por 06.09.2012 / 12:34
13

Como afirmado, os arquivos de cabeçalho definem as interfaces para as funções, bem como as estruturas usadas pelos programas.

No caso dos arquivos de cabeçalho do kernel, essas funções e estruturas estão dentro do próprio kernel.

Se você está construindo um kernel completo, então, obviamente, você precisa dos arquivos fonte completos, não apenas dos cabeçalhos. No entanto, se você estiver compilando um driver de dispositivo ou outro módulo carregável que se vincula ao kernel, você só precisará dos arquivos de cabeçalho, portanto poderá economizar espaço ao não instalar as fontes completas.

A separação de pacotes para que você possa instalar apenas os arquivos de cabeçalho é parcialmente histórica, já que a diferença no uso do disco costumava ser uma consideração significativa quando os discos eram menores. Atualmente, ter a fonte inteira no disco (desnecessariamente) não seria uma consideração importante do espaço em disco.

    
por 07.09.2012 / 01:13
5

O termo arquivo de cabeçalho se origina da linguagem de programação C usada para escrever o kernel do Linux.

Para explicar isso de um nível muito alto ...

Em C, você precisa ter uma declaração para frente de uma função antes de usá-la. Em outras palavras, uma descrição da função, seus parâmetros e que tipo de dados ela retorna. É uma prática comum colocar todas as declarações de encaminhamento em um único arquivo chamado cabeçalho . Os arquivos de código fonte para outros programas podem então include deste cabeçalho e ter acesso a todas as funções no executável resultante do programa, uma vez que ele tenha sido compilado.

Os arquivos de cabeçalho do Linux são todos os arquivos .h que contêm as funções fornecidas pelo kernel do Linux que podem ser chamadas de outros programas.

    
por 07.09.2012 / 01:48