Beim Erstellen externer Module mit Linux RPI-5.10.y wird kein GCC-Kompilierungsprotokoll „CC [M]“ angezeigtLinux

Linux verstehen
Anonymous
 Beim Erstellen externer Module mit Linux RPI-5.10.y wird kein GCC-Kompilierungsprotokoll „CC [M]“ angezeigt

Post by Anonymous »

Umgebung
  • Betriebssystem: Arch Linux x86_64
  • Host: Windows-Subsystem für Linux – archlinux (2.6.2.0)
  • Kernel: Linux 6.6.87.2-microsoft-standard-WSL2
  • Compiler: aarch64-linux-gnu-gcc 15.1.0 Mit integrierten Spezifikationen.
    COLLECT_GCC=aarch64-linux-gnu-gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/15.1.0/lto-wrapper
    Ziel: aarch64-linux-gnu
    Konfiguriert mit: /build/aarch64-linux-gnu-gcc/src/gcc-15.1.0/configure --prefix=/usr --program-prefix=aarch64-linux-gnu- --with-local-prefix=/usr/aarch64-linux-gnu --with-sysroot=/usr/aarch64-linux-gnu --with-build-sysroot=/usr/aarch64-linux-gnu --with-native-system-header-dir=/include --libdir=/usr/lib --libexecdir=/usr/lib --target=aarch64-linux-gnu --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-nls --enable-default-pie --enable-sprachen=c,c++,fortran --enable-shared --enable-threads=posix --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-Exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-liliberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release
    Thread-Modell: posix
    Unterstützte LTO-Komprimierungsalgorithmen: zlib zstd
    gcc Version 15.1.0 (GCC)
Build-Kernel

Code: Select all

git clone --branch rpi-5.10.y --single-branch https://github.com/raspberrypi/linux.git
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_prepare
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs -j$(nproc)
mein externes Modul erstellen
Das ist Makefile

Code: Select all

DRIVER_NAME := my_driver
obj-m += $(DRIVER_NAME).o

KERNEL_SRC:=/home/user/repository/linux/linux-5.10.y-raspi

PWD ?=$(shell pwd)
ARCH = arm64
CROSS_COMPILE = aarch64-linux-gnu-

all: build deploy

build:
$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNEL_SRC) M=$(PWD) modules

clean:
$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNEL_SRC) M=$(PWD) modules clean
rm -rf *.ko *.o *.mod.o *.mod.c *.symvers *.order .tmp*
Dann führe ich make aus, die Ausgabe ist:

Code: Select all

❯ make
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -C /home/user/repository/linux/linux-5.10.y-raspi M=/home/user/repository/linux/linux_driver_learning/my_driver modules
❯ ls
 Makefile         modules.order   my_driver.ko    my_driver.mod.c   my_driver.o
 Module.symvers   my_driver.c     my_driver.mod   my_driver.mod.o
Die „.ko“-Datei wird generiert, aber wie oben gezeigt, wird kein GCC-Protokoll gedruckt. Ich finde eine Lösung, zum Beispiel: Hinzufügen von „V=1“ (es werden nur mehr „Make“-Befehle gedruckt) usw., aber keiner davon hat funktioniert;
Wenn ich die saubere Kernel-Quelle von https://www.kernel.org/ heruntergeladen habe, hat es funktioniert (Änderung des Arguments „-C“), das GCC-Erstellungsprotokoll wird wie folgt angezeigt:

Code: Select all

❯ make
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -C /home/user/repository/linux/linux-5.10.246 M=/home/user/repository/linux/linux_driver_learning/my_driver modules
CC [M]  /home/user/repository/linux/linux_driver_learning/my_driver/my_driver.o
WARNING: Symbol version dump "Module.symvers" is missing.
Modules may not have dependencies or modversions.
MODPOST /home/user/repository/linux/linux_driver_learning/my_driver/Module.symvers
WARNING: modpost: Symbol info of vmlinux is missing. Unresolved symbol check will be entirely skipped.
CC [M]  /home/user/repository/linux/linux_driver_learning/my_driver/my_driver.mod.o
LD [M]  /home/user/repository/linux/linux_driver_learning/my_driver/my_driver.ko
Was muss ich tun, damit diese „CC [M]“ beim Erstellen externer Module basierend auf der Kernelquelle rpi-5.10.y angezeigt werden? Denn es zeigt auch keine Fehler an, wenn ich etwas Falsches in mein Modul geschrieben habe, und es macht mich wahnsinnig.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post