GNU/Linux >> Znalost Linux >  >> Linux

Vytvoření modulu jádra z několika zdrojových souborů, z nichž jeden má stejný název jako modul

Našel jsem řešení, umístil jsem svůj zdrojový soubor do podsložky:

Makefile
src/mymodule.c
src/mymodule_func.c

#Makefile
obj-m += mymodule.o
mymodule-objs := ./src/mymodule.o ./src/mymodule_func.o

all:
    make -C $(KERNEL_PATH) M=$(PWD) modules

clean:
    make -C $(KERNEL_PATH) M=$(PWD) clean

Správný způsob opravy v souboru make jádra by byl:

# 
obj-m+= my_module.o

#append other source files except my_module.c which would be include by default
my_module-objs+= src1.o src2.o

Podle mého chápání není možné, aby název modulu a název zdroje byly stejné. Bylo by lepší zadat název modulu jako module.o a použijte Makefile pro kompilaci zaváděcího modulu jádra, jak je ukázáno níže,

Makefile

# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
    **obj-m := module.o
        module-objs := mymodule.o mymodule_func.o**
    # Otherwise we were called directly from the command
    # line; invoke the kernel build system.
    EXTRA_CFLAGS += -DDEBUG
else
    KERNELDIR   := /lib/modules/$(shell uname -r)/build
    PWD         := $(shell pwd)
default:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
clean: 
    $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) clean

Linux
  1. Přesměrovat na stejný soubor jako zdrojový soubor zpracovaný příkazem?

  2. Najít soubory, pro které existuje více variant tohoto názvu souboru společně ve stejném adresáři?

  3. Zkoumání souborů Berkeley DB z CLI

  1. Jak zjistit verzi kompilovaného modulu jádra?

  2. Spuštění funkce uživatelského prostoru z prostoru jádra

  3. změny parametrů modulu jádra (pomocí /sys/module)

  1. Jaký je aktuální zdrojový kód jádra Linuxu?

  2. Kompilace modulu jádra mimo strom proti libovolnému zdrojovému stromu jádra na souborovém systému

  3. Jaká je sekvence načítání modulu linuxového jádra při spuštění? Jak je jim nastavena priorita?