Estou trabalhando em um projeto Linux. Quero ter algum código (para ser específico, uma estrutura) e um arquivo de cabeçalho (minha própria implementação) comum ao kernel e ao espaço do usuário. Alguém pode me dizer como implementar isso?
Responder1
A resposta simples é incluir apenas o cabeçalho em ambas as partes (compiladas separadamente) do projeto. Você pode fazer isso como quiser; uma hierarquia de diretórios óbvia pode ser semelhante a:
project/
userspace_stuff/
kernal_stuff/
inc/
project_namespace/
Isso inc/project_namespace
é opcional - você pode facilmente colocar o cabeçalho no nível superior e usá-lo #include "../myheader.h"
nos arquivos de origem nos dois subdiretórios. Pessoalmente, acho que usar caminhos relativos com inclusões pode ser confuso, então gosto de ter um inc
diretório e caminhos absolutos ( #include <project_namespace/myheader.h>
), facilitados pela organização de um makefile de nível superior com algo como:
INC = -Iinc
CFLAGS += $(INC)