- 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)
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)
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*
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
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
Mobile version