Кконфиг и ЛКМ

Я работаю с LKM вне дерева ядра и хочу использовать некоторые параметры компиляции для своего модуля, например MYLKM_CONFIG_{что-то}. Я знаю, что это можно сделать с помощью предварительной обработки C (#define // #ifdef // #endif). Но я хочу знать, можно ли для этих целей использовать Kbuild (файлы Kconfig или что-то подобное)?..

И еще один вопрос. Возможно ли make menuconfig только для моего модуля, а не для всего дерева ядра?

Спасибо.


person Ilya Matveychikov    schedule 18.05.2011    source источник
comment
Это хорошая идея, чтобы опубликовать второй вопрос как отдельный вопрос.   -  person Robin Green    schedule 20.05.2011


Ответы (1)


Если вы используете рекомендуемый метод сборки драйверов вне дерева (см. ldd, глава 2), команда должна выглядеть так:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

Эффект этой команды два:

  1. опция -C изменяет текущий каталог на $(KERNELDIR), где находится основной Makefile ядра.
  2. опция -M заставляет make-файл вернуться к вашему текущему каталогу разработки модулей $(PWD), где он пытается построить целевые модули

Поэтому, если вы скопируете свой .config из $(KERNELDIR) в $(PWD), он должен быть проанализирован Makefile, и у вас должны быть доступны все ваши CONFIG_LKM_* #define (хотя это не проверялось, но звучит логично).

Что касается вопроса make menconfig, что касается приведенного выше объяснения, это может сработать, если вы добавите несколько файлов KConfig в свой каталог $(PWD).

person Longfield    schedule 20.05.2011
comment
Хорошо, спасибо за ответ, но это не совсем то, что я хочу знать. Вопрос в том, как использовать .config-подобный файл проекта в дополнение к файлу ядра. - person Ilya Matveychikov; 24.05.2011
comment
Я не думаю, что ядро ​​поддерживает два файла .config. Вам нужно будет скопировать один из каталога ядра в каталог вашего модуля и добавить в него несколько #define. - person Longfield; 24.05.2011