У меня есть базовый модуль драйвера Linux устройства:драйвера Linux модуль компиляция с помощью GCC
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int __init hello_init(void)
{
printk(KERN_ALERT "Hello, world \n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_ALERT "Goodbye, world \n");
}
module_init(hello_init);
module_exit(hello_exit);
Я могу скомпилировать этот модуль в традиционном способе, который с помощью простого Makefile, который использует OBJ-м, но Я хочу скомпилировать это с помощью командной строки gcc. Это связано с тем, что я могу использовать флаг gcc -save-temps для просмотра промежуточных сгенерированных файлов (это может быть особенно полезно для понимания, поскольку ядро Linux использует много препроцессоров).
Так есть способ скомпилировать с помощью командной строки gcc ??
EDIT Прикрепление Makefile я использовал
ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
EXTRA_CFLAGS+= -save-temps
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
.PHONY: modules modules_install clean
else
obj-m := hello.o
endif
Использование 'gcc' из командной строки успешно зависит от настройки оболочки окружающей среды должным образом. Это (частично), для чего предназначены 'make' и' Makefile'. Если вы действительно настаиваете на использовании оболочки, вам следует добавить свой «Makefile» на свой вопрос для просмотра. – sawdust