问题:
./include/uapi/asm-generic/int-ll64.h:12:10: fatal error: asm/bitsperlong.h: No such file or directory #include <asm/bitsperlong.h>
make -C /lib/modules/5.4.0-146-generic/build M=/home/book/LinuxDriver/code/01_module modules
make[1]: Entering directory '/usr/src/linux-headers-5.4.0-146-generic'
CC [M] /home/book/LinuxDriver/code/01_module/hello.o
In file included from ./include/asm-generic/int-ll64.h:11:0,
from ./arch/arm/include/uapi/asm/types.h:5,
from ./include/uapi/linux/types.h:5,
from ./include/linux/compiler.h:249,
from ./include/linux/init.h:5,
from /home/book/LinuxDriver/code/01_module/hello.c:7:
./include/uapi/asm-generic/int-ll64.h:12: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/LinuxDriver/code/01_module/hello.o' failed
make[2]: *** [/home/book/LinuxDriver/code/01_module/hello.o] Error 1
Makefile:1767: recipe for target '/home/book/LinuxDriver/code/01_module' failed
make[1]: *** [/home/book/LinuxDriver/code/01_module] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.4.0-146-generic'
Makefile:7: recipe for target 'all' failed
make: *** [all] Error 2
查看路径其实是存在该文件的
最终问题解决:
使用命令查看当前是否设置了其他交叉编译工具链
echo $CROSS_COMPILE
若存在,比如我在~/.bashrc 中 永久设置了ARM架构交叉编译工具链,而本次我需要生成的是x86架构的驱动程序,所以将~/.bashrc中间交叉编译工具链设置代码去掉即可
打开新的终端,即可make成功文章来源:https://www.toymoban.com/news/detail-778323.html
最后的话
这是因为当在~/.bashrc中永久设置了arm的交叉编译工具链时,它会影响到所有终端会话和shell。这可能会导致编译器在寻找头文件和库时查找错误的路径。注释掉这些设置后,编译器将使用默认的路径查找头文件和库,这可能会解决编译错误。建议在需要使用交叉编译工具链时,使用临时设置或者在特定的shell会话中设置,而不是永久设置在~/.bashrc文件中。
文章来源地址https://www.toymoban.com/news/detail-778323.html
到了这里,关于解决 fatal error: asm/bitsperlong.h: No such file or directory #include <asm/bitsperlong.h>的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!