本贴对Linux和安卓系统驱动编译中常见的错误进行记录,并补充相应解决方法,若读者对照此方法无法解决,欢迎补充讨论。
错误一:make时提示找不到make、gcc、g++、flex等
表示当前系统缺少必要的工具包,可执行以下命令安装。
sudo apt install -y make flex bison g++ build-essential
错误二:error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time]
表示当前编译环境会进行编译的 DATE 以及 TIME 进行检查,若有Warnings警告也作为错误处理上报。参考解决方法:
1. 驱动对应的Makefile文件中增加一行:CFLAGS += -Wno-error=date-time,然后保存重新 make编译。(注:若 CFLAGS 不生效,可将关键字替换为 EXTRA_FLAGS重试)
2. 修改 /lib/modules/'uname -r'/build/Makefile 文件,找到包含 “-Werror=date-time” 这一行注释掉,然后保存退出,重新编译。
错误三:/lib/modules/xxx/build: No such file or directory
表示当前系统缺少内核开发包,为安装匹配系统架构和内核版本的包即可解决此问题。因不同系统包名和安装指令不同,如下仅给出部分系统解决方式供参考。
Ubuntu/Debian/Linux Mint上安装内核头文件
使用dpkg-query命令检查是否有可用的内核头文件。
$ dpkg-query -s linux-headers-$(uname -r)
sudo apt-get install build-essential //install build-essential(optional)
sudo apt-get update
sudo apt-get install linux-headers-$(uname -r)
Fedora/CentOS/RHEL上安装内核头文件
$ rpm -qa | grep kernel-headers-$(uname -r)
$ sudo yum install kernel-headers
$ sudo yum install kernel-devel
树莓派/Raspberry Pi上安装内核头文件
sudo apt install raspberrypi-kernel-headers
其他系统解决方法类似。欢迎大家讨论补充~