请教关于longan SDK编译的问题
-
请教一下各位大佬,在使用longan SDK编译系统的时候,需要设置ARCH=arm吗?我一设置ARCH=arm,然后使用build.sh就会编译失败,ARCH设置为空就不会。如果不设置ARCH=arm,编译出来的系统在编译.ko模块的时候会报找不到asm/types.h,请问这个是什么原因啊?还望哪位大佬不吝赐教,小弟万分感谢
-
@zhuzhengjun003 I have a lot of errors when trying to compile for LonganPi_3h SDK its buggy even though it says 22.04 is best I had to fix a lot of dependency issues. and I had janky mklinux.sh
-
@zhuzhengjun003 在 请教关于longan SDK编译的问题 中说:
请教一下各位大佬,在使用longan SDK编译系统的时候,需要设置ARCH=arm吗?我一设置ARCH=arm,然后使用build.sh就会编译失败,ARCH设置为空就不会。如果不设置ARCH=arm,编译出来的系统在编译.ko模块的时候会报找不到asm/types.h,请问这个是什么原因啊?还望哪位大佬不吝赐教,小弟万分感谢
I have run in to this I assume you figured it out. it really depends in your chip and end use. if your boardconfig is correct and you are sure what toolchain you are using. I know my android build I was working on freaked me out because I noticed it started compiling RiscV and then swtiched to arm and I was scared it was going to fait and 2hours later if finished awesome. I always feel weird posting in english so here is a better translation. 此问题通常归结为预期的交叉编译环境与构建系统(或 SDK)的配置方式不匹配。
当您设置 ARCH=arm 时:
构建系统被强制进入 ARM 交叉编译模式。但是,Longan SDK 的构建脚本(如 build.sh)通常针对目标架构进行了预配置。强制 ARCH=arm 可能会破坏 SDK 的内置假设(甚至与预配置的工具链相冲突),从而导致编译错误。当您将 ARCH 留空时:
构建系统默认为其自己的配置。这允许 build.sh 完成而不会出现错误,但在编译内核模块 (.ko) 时,构建过程无法找到 asm/types.h,因为尚未为 ARM 环境设置包含路径。在许多现代内核中,像 asm/types.h 这样的头文件要么被移动,要么被别名化(通常为 linux/types.h),因此如果模块的 makefile 已过时,也可能存在兼容性问题。怎么办
依赖 SDK 的环境:
Longan SDK 可能已经针对 ARM 进行了配置。尝试不要通过手动设置 ARCH 来覆盖环境。相反,使用 SDK 提供的工具链和环境变量,以便正确设置所有路径和标志。检查模块的构建设置:
确保内核模块的 makefile 使用正确的 ARM 包含路径和头文件位置。
如果您的目标内核已移动或删除 asm/types.h,请更新模块源以包含 linux/types.h 或使用适当的头文件。
验证交叉编译工具链:
如果必须设置 ARCH=arm,请仔细检查交叉编译工具链(通过 CROSS_COMPILE 和相关变量)是否定义正确。此处的不匹配可能会导致主系统构建失败。查看 SDK 文档:
某些 SDK 存在一些怪癖,即某些变量是预先配置的。值得查看 Longan SDK 文档,看看是否有交叉编译内核模块的推荐做法。摘要
如果 SDK 已经管理了 ARCH=arm,请不要手动设置它,因为这可能会导致设置冲突。
调整模块的构建配置,以便它找到 ARM 的正确头文件路径(或更新包含以匹配现代内核标准)。
如果需要覆盖默认值,请仔细检查工具链设置。
通过将模块的构建环境与 SDK 的配置保持一致,您应该可以避免 build.sh 中的编译失败和 .ko 模块中的头文件错误。
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号