编译buildroot时报以下错误:
Incorrect selection of kernel headers: expected 4.9.x, got 4.18.x
package/pkg-generic.mk:211: recipe for target ‘busybox/buildroot-2018.02.1/output/build/toolchain-external-custom/.stamp_configured’ failed
make: ***
[busybox/buildroot-2018.02.1/output/build/toolchain-external-custom/.stamp_configured] Error 1
原因是配置buildroot工具链的linux内核版本与工具链本身自带的内核版本标识不一致导致的,我们只要修改下工具链自带的内核版本表示即可。
1、在笔者电脑找交叉编译工具链安装路径:
whereis arm-linux-gnueabihf-gcc
找到路径如下:
arm-linux-gnueabihf-gcc: /opt/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
2、进入交叉工具链安装路径,查找version.h文件
cd /opt/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/
find -name "version.h"
找到文件如下:
./arm-linux-gnueabihf/libc/usr/include/linux/version.h
3、编辑对应的version.h文件
sudo vi ./arm-linux-gnueabihf/libc/usr/include/linux/version.h
里面有个宏定义就是内核版本标识
#define LINUX_VERSION_CODE 266752
266752对应16进制为0x041200,拆分每个字节后对应的版本号为4.18.0与错误提示的log一致。
我们需将其改为4.9.0,对应16进制为0x40900,即10进制为264448。
#define LINUX_VERSION_CODE 264448
保存后,重新编译即可清除该错误。
sudo make clean
sudo make