这里需要注意一下,官方的镜像,分为2019-09-26-raspbian-buster,2019-09-26-raspbian-buster-full,2019-09-26-raspbian-buster-lite这三个版本。笔者先用的是lite版本的,但是一直不成功,驱动编译不了,会一直报错,详细如下说明。使用2019-09-26-raspbian-buster-full版本的镜像,能够顺利的编译过去。个人猜想可能是lite精简版的有些库之类的没有,所以编译不过,full版本的相应的软件功能比较全面。如果有那个老铁知道是什么原因的,欢迎告知。
使用的官方的lite版本的镜像,需要下一步操作。
1.用以获取相对应的源代码
sudo apt-get update
sudo apt-get install raspberrypi-kernel-headers
pi@raspberrypi:/usr/src/$ls
linux-headers-4.19.75+ linux-headers-4.19.75-v7+ linux-headers-4.19.75-v7l+ linux-headers-4.19.75-v8+
2.测试环境是否OK
makefile文件:
将内核路径换成:/usr/src/linux-headers-4.19.75 +
将内核路径换成:/usr/src/linux-headers-4.19.75-v8+
./include/uapi/asm-generic/int-ll64.h:12:10: fatal error: asm/bitsperlong.h: No such file or directory
./arch/arm/include/uapi/asm/unistd.h:24:10: fatal error: asm-generic/unistd-oabi.h: No such file or directory
#include <asm-generic/unistd-oabi.h>
将内核路径换成:/usr/src/linux-headers-4.19.75-v7+
将内核路径换成:/usr/src/linux-headers-4.19.75-v7l+
换成full版本的官方镜像,内核模块可以正常编译。
如果出现在insmod的时候:
可以先通过uname -a查看版本信息。然后在Makefile文件中将内核的路劲选为相应的内核。
在Makefile中也要选择相对应的内核版本:
note:
raspberry pi2b and pi3: v7+
raspberry pi4b: v7l+
参考:
https://blog.csdn.net/u011031257/article/details/80841957