Estou tentando criar o IBCS (source here ) no Ubuntu 15.10 (Linux 4.2.35).
Este módulo é obviamente muito antigo, porque seu arquivo CONFIG.i386 fornece gcc uma opção -m486 , que não existe mais, mas mudar para -march=native parece funcionar bem.
O arquivo emulate.c contém #includes como:
#include <linux/config.h>
#include <linux/module.h>
#include <linux/version.h>
#include <asm/uaccess.h>
No meu sistema, apenas linux/version.h existe. O seguinte parece funcionar, no entanto:
#include "/usr/include/valgrind/config.h"
#include "/usr/include/sepol/module.h"
#include <linux/version.h>
#include </usr/src/linux-headers-4.2.0-35/include/linux/uaccess.h>
(YMMV, claro, se você não tiver sepol .)
Isso funciona, exceto pelo /usr/src/linux-headers-4.2.0-35/include/linux/uaccess.h , o topo do qual tem
#include <asm/uaccess.h>
O que não é encontrado.
Parece que não tenho uma pasta asm em /usr/include ou /usr/include/linux . Eu tenho um /usr/include/asm_generic , mas não tem uaccess.h .
Minhas perguntas são:
-
Por que os cabeçalhos modernos do kernel contêm referências a arquivos (aparentemente) inexistentes, em vez de fornecê-los em si?
-
Onde posso obter uma versão de asm/uaccess.h e os outros cabeçalhos necessários para a compilação?