Por que tentar criar um módulo do kernel me dá um erro de “-1 Unknown symbol”?

1

Comprei recentemente um Kinect para Windows e descobri rapidamente que os drivers de câmera incluídos no kernel Linux 3.0+ não são compatíveis com a revisão de hardware do Kinect for Windows. Depois de olhar para o código-fonte, parece que uma pequena modificação é tudo o que é necessário para compatibilidade, então eu tenho tentado recompilar o driver - sem sucesso.

Eu tenho me referido ao artigo e este também , embora estejam um pouco desatualizados.

Quando tento compilar o módulo, recebo um erro porque o arquivo de cabeçalho "gspca.h" não pode ser encontrado no caminho de inclusão. Eu localizei o cabeçalho ausente no meu sistema de arquivos, mas o arquivo em si está vazio. Eu também tentei baixar o código fonte do kernel (3.2.0-24-generic), o que me permitiu compilar o módulo, mas quando eu carrego o módulo eu recebo um erro.

-1 Unknown symbol in module

Existe uma maneira padrão de fazer isso sem primeiro construir o kernel? A construção do kernel garantirá que eu possa construir o módulo?

Obrigado

    
por Colin Ray 10.06.2012 / 23:43

1 resposta

0
% bl0ck_qu0te%
  • Se você obtiver esse erro, não . Você pode forçar o carregamento do módulo e provavelmente ele funcionará, mas você não poderá depurá-lo e esse método não é recomendado.

  • O erro ocorre porque você está perdendo o banco de dados de símbolo do módulo module.symvers .

  • A maneira correta de gerar esse arquivo é executar uma compilação completa do kernel - isso irá permitir que você construa o módulo.
  • Tenha muito cuidado ao configurar o kernel exatamente para as especificações de estoque, a menos que você pretenda instalar e executar no kernel construído.
por ish 11.06.2012 / 03:26