linux编译报错:./include/linux/bits.h:6:10: fatal error: asm/bitsperlong.h: No such file or directory解决方法

ubuntu编译报错:./include/linux/bits.h:6:10: fatal error: asm/bitsperlong.h: No such file or directory解决方法

今天总算鼓起勇气打开ubuntu来学习一下Linux驱动相关内容,万事开头难呀,第一个照抄的程序都卡壳了,代码如下:

#include<linux/module.h>
int hello_init(void)
{
    printk("hello Felix_init\n")
}
void cleanup_module(void)
{
	printk("hello Felix_cleanup_modules\n")
}
module_init(hello_init)
MODULE_LICENSE("GPL");

Makefile文件如下:

KVERSION = $(shell uname -r)
KERN_DIR = /lib/modules/$(KVERSION)/build
all:
	make -C $(KERN_DIR) M='pwd' modules
clean:
	make -C $(KERN_DIR) M='pwd' modules clean
	rm -rf modules.order
obj-m	+=hello_drv.o

但就是这几行代码把我这个小白碰得头破血流,差点入门即放弃,在ubuntu下编译报错了,报错信息如下:
In file included from ./include/linux/bitops.h:5:0,
from ./include/linux/kernel.h:12,
from ./include/linux/list.h:9,
from ./include/linux/module.h:9,
from /home/book/practice/2_2/hello_drv.c:1:
./include/linux/bits.h:6:10: fatal error: asm/bitsperlong.h: No such file or directory
#include <asm/bitsperlong.h>
^~~~~~~~~~~~~~~~~~~
compilation terminated.
scripts/Makefile.build:270: recipe for target ‘/home/book/practice/2_2/hello_drv.o’ failed
make[2]: *** [/home/book/practice/2_2/hello_drv.o] Error 1
Makefile:1762: recipe for target ‘/home/book/practice/2_2’ failed
make[1]: *** [/home/book/practice/2_2] Error 2
make[1]: Leaving directory ‘/usr/src/linux-headers-5.4.0-126-generic’
Makefile:8: recipe for target ‘all’ failed
make: *** [all] Error 2

嗯,第一眼感觉就是缺少文件嘛,问题不大,按照路径进去发现include目录根本就没有asm文件,只有asm-generic目录,进入asm-generic目录后找到了bitsperlong文件,然后就理所当然的把*./include/linux/bits.h里面的#include <asm/bitsperlong.h>改为#include <asm-generic/bitsperlong.h>,果不其然,这个错误消失了,但又出现其他类似错误,只是不是bitsperlong罢了,按照这个方法一个一个该不知何时是头,搞完还不一定是能正常通过编译,最终发现由于是自己设置了交叉编译工具链,即在arm编译环境下编译x86文件,导致编译报错。说到这里
你一定记得自己曾今有配置过这个东西:

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:******/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

是的,就这个东西捣的鬼,现在你只需要执行如下l两条指令重新配置编译环境即可解决:`

export CROSS_COMPILE=
export ARCH=x86

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值