LINUX.ORG.RU

Возможно ли както скомпилить модуль ядра с параметром -DDEBUG для ядра 2.6


1

1

Модуль для ядра 2.6 компилируется командой

make -C $(KDIR) M=$(PWD) modules

make -C $(KDIR) M=$(PWD) modules -DDEBUG
make: invalid option — 'D'

В коде модуля ядра хочется отключать отладочный вывод команды printk. Где-то натыкался на примеры с книжки только там для ядра 2.0 и компиляция соответственно осуществлялась по другому.

#ifdef DEBUG
  printk("DEBUG");
#endif

Можно ли как то управлять сборкой со своими параметрами под ядро 2.6.

Вообще, лучше делать так, но в вашем некроядре этого может не быть.

naszar ()
Последнее исправление: naszar (всего исправлений: 1)
Ответ на: комментарий от naszar

Спасибо большое.

CFLAGS_<modul_name>.o := -DDEBUG ??? (новая строчка в Makefile). Будeт работать только для modul_name.c.

Работает так как вы и сказали. Натолкнули на мысль.
Попробовал CFLAGS=-DDEBUG получил в ответ Fix it to use EXTRA_CFLAGS.
Те решение проблемы оказалось использование EXTRA_CFLAGS
EXTRA_CFLAGS = -DDEBUG

Применение EXTRA_CFLAGS в том же Makefile где собирается модуль работает, а вот как передать из другого Makefile эти флаги пока не сообразил:

emul_driver: 
	$(MAKE) -C em_hdriver  

Спасибо так же за ссылку по интерфейсу динамической отладки(раньше не приходилось пользоваться).

usr_Vladmir ()
Ответ на: комментарий от usr_Vladmir

Как то странно работает:

export EXTRA_CFLAGS = -DDEBUG
Те переменная EXTRA_CFLAGS в подмайке попадает, но на процесс компиляции не виляет, как будто нет опции -DDEBUG.
@echo EXTRA_CFLAGS=$(EXTRA_CFLAGS)
make -C $(KDIR) M=$(PWD) modules 
Вывод в подмайке EXTRA_CFLAGS=-DDEBUG.

Нашел другой способ:
$(MAKE) -C em_hdriver all EXTRA_CFLAGS=«$(EXTRA_CFLAGS)» Так работает. Почему экспорт не сработал не понимаю

usr_Vladmir ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.