GNU/Linux >> Tutoriels Linux >  >> Linux

Construire un module noyau à partir de plusieurs fichiers source dont l'un porte le même nom que le module

J'ai trouvé une solution, j'ai placé mon fichier source dans un sous dossier :

Makefile
src/monmodule.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

La bonne façon de corriger dans le fichier de création du noyau serait la suivante :

# 
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

Selon ma compréhension, il n'est pas possible que le nom du module et le nom de la source soient identiques. Il serait préférable de fournir le nom du module sous la forme module.o et utilisez le Makefile pour compiler le module de noyau chargeable comme indiqué ci-dessous,

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. Examen des fichiers Berkeley DB à partir de la CLI

  2. Comment supprimer les lignes qui apparaissent sur le fichier B d'un autre fichier A ?

  3. modifications des paramètres du module du noyau (à l'aide de /sys/module)

  4. Quelle est la source actuelle du noyau Linux ?

  5. Comment trouver les fichiers qui occupent 80 % de l'espace sur un serveur Web Linux ?

Comment déplacer des fichiers d'un compte utilisateur à un autre sur le même ordinateur ?

Migrer un serveur Linux depuis la ligne de commande

Comment compiler le noyau Linux à partir de la source pour créer un noyau personnalisé

Pourquoi les gens se procurent-ils bash_profile à partir de bashrc au lieu de l'inverse ?

Pourquoi est-il possible de retourner l'écran ?

Quelle est la séquence de chargement du module du noyau Linux au démarrage ? Quelle priorité leur est accordée ?