Isnis-fallen 2023-11-19 18:27 采纳率: 0%
浏览 146
已结题

Linux系统上驱动交叉编译时出现:No such file or directory

解决 Linux系统上驱动交叉编译时出现:
include/uapi/linux/types.h:5:10: fatal error: asm/types.h: No such file or directory
内核版本:5.4.47

解决方案:对比内核版本4.1.35版本发现,在内核顶层的Makefile的LINUXINCLUDE宏中少加入了-I$(objtree)/arch/$(SRCARCH)/include/generated/uapi路径,加入后编译正常。

我的内核版本是5.2.0.36-generic, 这个办法不灵啊,是不是我用错了, 请问makefile 改完还需要做什么操作吗?我改完就直接调用交叉工具链编译了。结果还是出那个错误。

  • 写回答

25条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-11-19 19:06
    关注
    获得3.00元问题酬金

    引自强大而免费的微信小程序:皆我百晓生

    问题描述

    在Linux系统上,使用交叉工具链编译驱动时,出现以下错误:
    include/uapi/linux/types.h:5:10: fatal error: asm/types.h: No such file or directory

    解决方案

    这个错误通常是因为编译器找不到asm/types.h头文件导致的。解决的方法是确保编译器能够找到该头文件。

    以下是一个解决该错误的步骤:

    1.确认内核版本

    确保你的内核版本正确,可以使用以下命令检查:

    uname -r
    

    2.确认头文件路径

    使用以下命令确认你的内核头文件路径:

    ls /usr/src/linux-headers-<version>/arch/<architecture>/include/generated/uapi/
    

    其中,<version>应该是你的内核版本号,例如5.4.47;<architecture>应该是你的系统架构,例如x86。

    3.修改Makefile文件

    找到你要编译的驱动所在目录下的Makefile文件,然后添加以下内容:

    LINUXINCLUDE += -I/usr/src/linux-headers-<version>/arch/<architecture>/include/generated/uapi/
    

    确保替换<version><architecture>为你实际的内核版本和系统架构。

    4.重新编译驱动

    重新运行交叉编译命令,例如:

    make ARCH=<architecture> CROSS_COMPILE=<cross-compiler-prefix>
    

    其中,<architecture>是你的系统架构,例如x86;<cross-compiler-prefix>是你的交叉编译工具链的前缀。

    如果你已经按照以上步骤操作,但仍然出现相同的错误,请确保确认你的内核版本和路径是否正确,并检查Makefile文件是否正确修改。

    希望以上解决方案对你有帮助。如果你还有其他问题,请随时向我提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月27日
  • 赞助了问题酬金100元 11月19日
  • 修改了问题 11月19日
  • 创建了问题 11月19日

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题