Estoy trabajando en un proyecto de Linux. Quiero tener algo de código (para ser específico, una estructura) y un archivo de encabezado (mi propia implementación) común tanto al kernel como al espacio de usuario. ¿Alguien puede decirme cómo implementar esto?
Respuesta1
La respuesta simple es simplemente incluir el encabezado en ambas partes del proyecto (compiladas por separado). Puedes hacerlo como quieras; una jerarquía de directorios obvia podría verse así:
project/
userspace_stuff/
kernal_stuff/
inc/
project_namespace/
Es inc/project_namespace
opcional: puede colocar fácilmente el encabezado en el nivel superior y utilizarlo #include "../myheader.h"
en los archivos fuente de los dos subdirectorios. Personalmente, encuentro que usar rutas relativas con inclusiones puede resultar complicado, por lo que me gusta tener un inc
directorio y rutas absolutas ( #include <project_namespace/myheader.h>
), facilitadas al organizar un archivo MAKE de nivel superior con algo como:
INC = -Iinc
CFLAGS += $(INC)