You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Buildroot交叉编译rtl8188eu内核模块报错:asm/bitsperlong.h不存在

解决Buildroot SDK交叉编译rtl8188eu驱动找不到asm/bitsperlong.h的问题

核心原因

直接用SDK的environment-setup脚本时,仅配置了工具链基础路径,但内核驱动编译需要明确指定对应目标架构的内核头文件搜索路径——尤其是asm/这类架构相关头文件,默认环境变量没把SDK里的内核头文件架构子目录(比如ARM架构下的arch/arm/include/asm)正确映射到include/asm的搜索路径中。而Buildroot封装成内部包时,会通过自身框架自动注入正确的头文件搜索参数,所以编译正常。

具体修复步骤

1. 确认SDK内核头文件结构

进入SDK的sysroot目录(通常为${SDK_PATH}/sysroot/usr/include),找到asm目录的实际位置,比如ARM架构下是arch/arm/include/asm,x86架构则是arch/x86/include/asm。

2. 编译时手动指定头文件路径

在编译驱动的Makefile中添加额外的头文件搜索参数:

EXTRA_CFLAGS += -I${SYSROOT}/usr/include/arch/[你的目标架构]/include/asm

或者直接在执行make命令时传递参数,以armv7架构为例:

make ARCH=arm CROSS_COMPILE=arm-buildroot-linux-gnueabihf- EXTRA_CFLAGS="-I${SDK_PATH}/sysroot/usr/include/arch/arm/include/asm"

3. 修正environment-setup脚本(可选)

如果不想每次编译都手动加参数,可修改SDK的environment-setup脚本,把架构相关的内核头文件路径加入CFLAGS:

export CFLAGS="${CFLAGS} -I${OECORE_NATIVE_SYSROOT}/usr/include/arch/[你的目标架构]/include/asm"

替换[你的目标架构]为实际架构名称,比如arm、x86_64等。

4. 验证编译

重新执行编译命令,确认asm/bitsperlong.h的引用错误消失。

内容的提问来源于stack exchange,提问作者Gregory

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:30:08