Como instalo os arquivos de cabeçalho do kernel?


85

Eu quero escrever um driver de dispositivo, mas não é possível encontrar o arquivo de cabeçalho, alguém pode me ajudar a encontrá-los? Além disso, se alguém puder apontar alguns links importantes do site que seriam realmente apreciados

Respostas:


118

Você deve conseguir instalar os arquivos de cabeçalho do kernel para o kernel atualmente em execução executando o seguinte em um terminal:

sudo apt-get install linux-headers-$(uname -r)

Em geral, os pacotes de cabeçalho do kernel são nomeados linux-header- * onde "*" indica a versão e variante (genérico, servidor, etc.).


3
hey obrigado, mas você poderia me dizer o que faz genérico, servidor, etc significa que eu quero escrever (driver kernel)
codificador

8
Isso não instalará os cabeçalhos para futuras atualizações automaticamente e você precisará executar novamente este comando sempre. Portanto, é recomendável instalar o metapacote, como descrito em outra resposta .
gertvdijk

Nota: isso não os coloca no caminho de inclusão do GCC, você ainda precisa -I.
Ciro Santilli publicou em 8/08/15

11
Nota: Para que isso funcione, a linha apropriada da deb-srclinha deve estar presente /etc/apt/sources.list.
Vorac

87

Você pode apenas digitar:

sudo apt-get install linux-headers-generic

se você estiver em uma instalação da área de trabalho. O apt-get resolverá as dependências e instalará a versão correta dos cabeçalhos do kernel.


15
e Ubuntu também irá atualizá-los quando uma nova versão sai
CSQ

3
Ou linux-headers-virtualse o seu executando uma VM em um exemplo OpenStack ...
BSchlinker

11
No Debian Wheezy, recebo a mensagem de erro "O pacote linux-headers-generic não está disponível, mas é referido por outro pacote. [...] E: O pacote 'linux-headers-generic' não tem candidato a instalação"
IQAndreas

4
@IQAndreas o linux-headers-genericpacote é específico do ubuntu. No Debian você deve usarsudo apt-get install linux-headers-$(uname -r)
Alexandre Teles

14

Isso deve cobrir outro problema quando: o kernel em execução é obsoleto, o que significa que não está mais no repositório nem em seus cabeçalhos. Portanto, a melhor coisa a fazer é atualizar o kernel para a última versão no repositório.

linux-genericé um meta pacote para manter a versão atual do kernel e seus cabeçalhos :

sudo apt-get update
sudo apt-get install linux-generic

Nota: Dependendo da edição do Ubuntu, veja se você precisa linux-lowlatency(Ubuntu Studio) linux-signed-genericou linux-virtual.


11
Nenhuma das outras soluções funcionou para mim ao tentar instalar um driver. Te agradece.
Sopalajo de Arrierez

11
quase equivalente para o debian é chamado linux-headers-amd64(para sistemas amd64, obviamente)
hanshenrik

1

Ou se você possui o aptitude instalado: sudo aptitude install linux-headers-$(uname -r)


5
Essencialmente a mesma coisa.
angular

-1

estes comandos devem funcionar:

sudo apt-get dist-upgrade -y
systemctl reboot
sudo apt-get install linux-headers-$(uname -r)
sudo apt-get upgrade linux-headers-$(uname -r)

para obter melhores instruções, confira este vídeo

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.