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?