导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    请教关于longan SDK编译的问题

    T Series
    longan sdk
    2
    3
    987
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Z
      zhuzhengjun003 LV 2 最后由 编辑

      请教一下各位大佬,在使用longan SDK编译系统的时候,需要设置ARCH=arm吗?我一设置ARCH=arm,然后使用build.sh就会编译失败,ARCH设置为空就不会。如果不设置ARCH=arm,编译出来的系统在编译.ko模块的时候会报找不到asm/types.h,请问这个是什么原因啊?还望哪位大佬不吝赐教,小弟万分感谢

      J 2 条回复 最后回复 回复 引用 分享 0
      • J
        Johnohhh1 LV 3 @zhuzhengjun003 最后由 编辑

        @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

        1 条回复 最后回复 回复 引用 分享 0
        • J
          Johnohhh1 LV 3 @zhuzhengjun003 最后由 编辑

          @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 模块中的头文件错误。

          1 条回复 最后回复 回复 引用 分享 0
          • 1 / 1
          • First post
            Last post

          Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

          行为准则 | 用户协议 | 隐私权政策