Я работаю над проектом 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)