GNU/Linux >> Linux Esercitazione >  >> Linux

Costruire un modulo del kernel da diversi file sorgente, uno dei quali ha lo stesso nome del modulo

Ho trovato una soluzione, ho inserito il mio file sorgente in una sottocartella:

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

Il modo corretto per correggere nel file make del kernel sarebbe come:

# 
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

Per quanto ne so, non è possibile che il nome del modulo e il nome della sorgente siano gli stessi. Sarebbe meglio fornire il nome del modulo come module.o e usa il Makefile per compilare il modulo del kernel caricabile come mostrato sotto,

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. Come spostare i file da un account utente a un altro sullo stesso computer?

  2. Come rimuovere le linee che appaiono sul file B da un altro file A?

  3. modifiche ai parametri del modulo del kernel (usando /sys/module)

  4. Qual è l'attuale sorgente del kernel Linux?

  5. Qual è la sequenza che carica il modulo del kernel Linux all'avvio? Qual è la priorità per loro?

Come compilare il kernel Linux dal sorgente per creare un kernel personalizzato

Come copiare i primi 10 file più recenti da una directory all'altra?

Compilazione di un modulo del kernel fuori dall'albero rispetto a qualsiasi albero dei sorgenti del kernel sul filesystem

Perché le persone si procurano bash_profile da bashrc invece che viceversa?

Perché è possibile capovolgere lo schermo?

Come si fa a trovare quali file occupano l'80% dello spazio su un server Web Linux?