Общий код для ядра и пользовательского пространства

Общий код для ядра и пользовательского пространства

Я работаю над проектом Linux. Я хочу иметь некоторый код (если быть точным, структуру) и заголовочный файл (моя собственная реализация), общие как для ядра, так и для пользовательского пространства. Может кто-нибудь подскажет, как это реализовать?

решение1

Простой ответ — просто включить заголовок в обе (отдельно скомпилированные) части проекта. Вы можете сделать это как вам угодно; очевидная иерархия каталогов может выглядеть так:

project/
    userspace_stuff/
    kernal_stuff/
    inc/
       project_namespace/

Это inc/project_namespaceнеобязательно — вы можете просто поместить заголовок на верхний уровень и использовать #include "../myheader.h"исходные файлы в двух подкаталогах. Лично я считаю, что использование относительных путей с include может стать беспорядочным, поэтому я предпочитаю иметь каталог incи абсолютные пути ( #include <project_namespace/myheader.h>), что облегчается организацией makefile верхнего уровня с помощью чего-то вроде:

INC = -Iinc
CFLAGS += $(INC)

Связанный контент