buildroot 编译报错解决编译器&内核版本不兼容问题

2 篇文章 0 订阅

目录

背景

版本

问题一

         解决办法

        下载链接

        问题二

        解决办法

        版本计算方式


背景

最近在使用新平台是需要做环境统一,开发环境和运行环境,之前使用的都是qt512,交叉编译器使用arm-linux-gcc7.5,新平台采用3.15的内核,交叉编译器使用arm-linux-gcc4.9,因此需要做统一;打算在一台设备中做两套运行环境在,后续发现库的兼容问题等,因此直降使用arm-liunx-gcc7.5做移植,本文记录编译文件系统遇到的问题。

版本

交叉编译器版本:arm-linux-gcc7.5

内核版本:3.15

问题一

使用apt-get install&ubuntu自带的编译器(我使用的)安装的编译器无法编译

现象

>>> toolchain-external-custom  Configuring
Distribution toolchains are unsuitable for use by Buildroot,
as they were configured in a way that makes them non-relocatable,
and contain a lot of pre-built libraries that would conflict with
the ones Buildroot wants to build.
package/pkg-generic.mk:224: recipe for target '/opt/buildroot-2017.11/output/build/toolchain-external-custom/.stamp_configured' failed
make: *** [/opt/buildroot-2017.11/output/build/toolchain-external-custom/.stamp_configured] Error 1

大致意思为:
交叉编译器不适合buildroot使用?
原因是它们以一种可重新定位的方式配置?
并且,包含了很多预置的库,这些库可能和buildroot想要创建的东西冲突?

经过查找资料分析得出:

ubuntu安装编译器是为了使用本身的环境,做了一下配置,如工具链不可以被重定位(non-relocatable)等 导致buildroot不接受这个工具链,

解决办法

自行网上下载编译器的tar包,直接解压使用就不会有问题了。

下载链接

问题二

编译器中的内核版本和buildroot中的内核版本不兼容问题。

Incorrect selection of kernel headers: expected 3.2.x, got 4.6.x

原因是在交叉编译器路径下有一个内核版本代码

buildroot在执行时会检测这这个内核版本代码

#define LINUX_VERSION_CODE 263680

在我的编译器路径是

gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/include/linux/version.h

263680 = 40600(h)

所以移位得到4.6.x的内核版本

但是buildroot中的版本号为3.15,两边那不一样,报错,

解决办法

修改交叉编译器中的版本号和buildroot中一致即可。

版本计算方式

197120 = ‭00110000001000000000(b) = 30200(h)对应3.2.x版本内核

263680 = ‭01000000011000000000‬(b) = 40600(h)对应4.6.x版本内核

199168 = ‭00110000101000000000‬(b) = 30A00(h)对应3.10.x版本内核

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值