![如何为另一个 Ubuntu 交叉构建外部(树外)内核模块?](https://linux22.com/image/1073858/%E5%A6%82%E4%BD%95%E4%B8%BA%E5%8F%A6%E4%B8%80%E4%B8%AA%20Ubuntu%20%E4%BA%A4%E5%8F%89%E6%9E%84%E5%BB%BA%E5%A4%96%E9%83%A8%EF%BC%88%E6%A0%91%E5%A4%96%EF%BC%89%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97%EF%BC%9F.png)
我可以在任何地方找到有关如何在 Ubuntu 上为 ARM64 上的另一个 Ubuntu 交叉编译外部模块的正确指南。我不得不-mrecord-mcount
从 CFLAGS 中删除该过程,因为最近的aarch64-linux-gnu-gcc
交叉编译器似乎都不支持此选项。
但后来我遇到了以下错误:
./include/uapi/linux/types.h:5:10: fatal error: asm/types.h: Nie ma takiego pliku ani katalogu
5 | #include <asm/types.h>
(实际上是什么让大家知道为什么gcc-multilib
不允许使用交叉编译器)
到目前为止,其他交叉编译对我来说都有效。我想知道arm64
我需要安装哪种架构的软件包才能asm/types.h
出现在/usr/include/aarch64-linux-gnu/
?
Makefile
:
obj-m := module.o
ovaone-objs += modmain.o mod-controls.o
ccflags-remove-y += -mrecord-mcount
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
all default: modules
install: modules_install
modules modules_install help clean:
$(MAKE) -C $(KERNELDIR) M=$(shell pwd) $@
添加ccflags-y += -I/usr/aarch64-linux-gnu/include
上述内容Makefile
会导致以下错误:
./arch/arm64/include/asm/alternative-macros.h:8:10: fatal error: asm/cpucaps.h: Nie ma takiego pliku ani katalogu
8 | #include <asm/cpucaps.h>
我找不到这样的文件所有的系统,意味着缺少了一些东西。唯一合理的参考是此内核补丁讨论。