GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erstellen eines Kernelmoduls aus mehreren Quelldateien, von denen eine den gleichen Namen wie das Modul hat

Ich habe eine Lösung gefunden, ich habe meine Quelldatei in einem Unterordner abgelegt:

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

Der richtige Weg, um in der Kernel-Make-Datei zu reparieren, wäre wie folgt:

# 
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

Nach meinem Verständnis ist es nicht möglich, dass der Modulname und der Quellname identisch sind. Es wäre besser, den Modulnamen als module.o anzugeben und verwenden Sie das Makefile zum Kompilieren des ladbaren Kernelmoduls wie unten gezeigt,

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. Untersuchen von Berkeley-DB-Dateien über die CLI

  2. Wie finde ich die Version eines kompilierten Kernelmoduls?

  3. Wie kopiert man die Top 10 der neuesten Dateien von einem Verzeichnis in ein anderes?

  4. Wie lautet die Reihenfolge, in der das Linux-Kernel-Modul beim Start geladen wird? Wie wird ihnen Priorität eingeräumt?

  5. Wie findet man heraus, welche Dateien 80 % des Speicherplatzes auf einem Linux-Webserver einnehmen?

In dieselbe Datei wie die vom Befehl verarbeitete Quelldatei umleiten?

Dateien finden, für die mehrere Variationen dieses Dateinamens zusammen im selben Verzeichnis vorhanden sind?

Migrieren eines Linux-Servers über die Befehlszeile

So kompilieren Sie den Linux-Kernel aus der Quelle, um einen benutzerdefinierten Kernel zu erstellen

Warum beziehen die Leute bash_profile von bashrc und nicht umgekehrt?

Warum ist es möglich, den Bildschirm umzudrehen?