GNU/Linux >> Belajar Linux >  >> Linux

Membangun modul kernel dari beberapa file sumber yang salah satunya memiliki nama yang sama dengan modul

Saya menemukan solusinya, saya menempatkan file sumber saya di sub folder:

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

Cara yang tepat untuk memperbaiki file kernel make adalah sebagai berikut:

# 
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

Sesuai pemahaman saya, tidak mungkin memiliki nama modul dan nama sumber yang sama. Akan lebih baik untuk memberikan nama modul sebagai module.o dan gunakan Makefile untuk mengkompilasi modul kernel yang dapat dimuat seperti yang ditunjukkan di bawah ini,

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. Redirect Ke File Yang Sama Dengan File Sumber yang Diproses Oleh Perintah?

  2. Temukan File Untuk Beberapa Variasi Pada Nama File Yang Ada Bersama Di Direktori Yang Sama?

  3. Bagaimana Cara Memindahkan File Dari Satu Akun Pengguna Ke Akun Pengguna Lain Di Komputer Yang Sama?

  1. Migrasi server Linux dari baris perintah

  2. Bagaimana cara menghapus garis yang muncul pada file B dari file A lainnya?

  3. Menjalankan fungsi ruang pengguna dari ruang kernel

  1. perubahan parameter modul kernel (menggunakan /sys/module)

  2. Apa sumber kernel Linux saat ini?

  3. Mengkompilasi modul kernel out-of-tree terhadap pohon sumber kernel apa pun pada sistem file