From 632c3eadbfdbc91dd73731f57c6f28580392a50b Mon Sep 17 00:00:00 2001 From: lindongping Date: Fri, 22 Mar 2024 11:39:23 +0800 Subject: [PATCH] README: support local compilation and cross-compilation of kernel external modules --- README.md | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 928def1b..e373042b 100644 --- a/README.md +++ b/README.md @@ -225,37 +225,26 @@ LINUX_OVERRIDE_SRCDIR指定了一个本地的内核源码目录,这样就不 `$ sudo runtime_replace_bootloader.sh image` 以上三条命令分别实现了更换uboot+image+dtb、更换uboot和更换image+dtb的功能,要求当前目录下有fip-all.bin和fitImage文件。 -# 系统支持linux-headers -linux-headers包含构建内核外部模块所需的头文件,编译defconfig会生成linux-headers。 -关于如何编译内核外部模块,可参考https://www.kernel.org/doc/html/latest/kbuild/modules.html +# 编译内核模块 +关于如何编译内核外部模块,可参考https://www.kernel.org/doc/html/latest/kbuild/modules.html ## 交叉编译内核模块 -编译phytiumpi_xxx_defconfig,会在`output/target/usr/src`目录中安装linux-headers-version。 使用工具链来交叉编译内核模块,工具链位于`output/host/bin`,工具链的sysroot为 -`output/host/aarch64-buildroot-linux-gnu/sysroot`。 +`output/host/aarch64-buildroot-linux-gnu/sysroot`。 -交叉编译内核外部模块的命令为: +交叉编译内核外部模块的命令为: ``` $ make ARCH=arm64 \ CROSS_COMPILE=/home/xxx/phytium-pi-os/output/host/bin/aarch64-none-linux-gnu- \ --C /home/xxx/phytium-pi-os/output/target/usr/src/linux-headers-5.10.153-phytium-embeded \ +-C /home/xxx/phytium-pi-os/output/build/linux-xxx/ \ M=$PWD \ modules ``` ## 开发板上编译内核模块 -编译完成后,linux-headers-version被安装在根文件系统的`/usr/src`目录下, -并为它创建了一个软链接`/lib/modules/version/build`。 -注意,由于linux-headers是在x86-64主机交叉编译生成的,在开发板上直接使用它编译内核模块会报错: -`/bin/sh: 1: scripts/basic/fixdep: Exec format error`。 -因此,需要将x86-64格式的fixdep等文件替换为ARM aarch64格式的(以linux 5.10内核为例): -(1)`scp -r username@host:/home/xxx/phytium-pi-os/board/phytium/common/linux-5.10/scripts /usr/src/linux-headers-5.10.153-phytium-embeded` -(2)或者在编译phytiumpi_xxx_defconfig之前,将board/phytium/common/post-custom-skeleton-debian-base-11.sh中的如下两行取消注释,再执行编译。 -`# cp -r board/phytium/common/linux-5.10/scripts $destdir` -`# cp -r board/phytium/common/linux-4.19/scripts $destdir` - -在开发板上编译内核外部模块的命令为: -`make -C /lib/modules/5.10.153-phytium-embeded/build M=$PWD modules` +利用linux-headers可以在开发板上进行内核模块编译,软链接`/lib/modules/version/build`指向linux-headers。 +在开发板上编译内核外部模块的命令为: +`make -C /lib/modules/xxx/build M=$PWD modules` # 编译新的应用软件 本节简单介绍如何交叉编译出能够运行在飞腾派开发板上的应用软件,完整的教程请参考用户手册docs/manual/manual.pdf。 -- Gitee